Bir dosyanın bulunduğu dizini almanın en basit yolu nedir? Bunu çalışan bir dizin ayarlamak için kullanıyorum.
string filename = @"C:\MyDirectory\MyFile.bat";
Bu örnekte, "C: \ MyDirectory" almalıyım.
Bir dosyanın bulunduğu dizini almanın en basit yolu nedir? Bunu çalışan bir dizin ayarlamak için kullanıyorum.
string filename = @"C:\MyDirectory\MyFile.bat";
Bu örnekte, "C: \ MyDirectory" almalıyım.
Yanıtlar:
Kesinlikle mutlak bir yolunuz varsa kullanın Path.GetDirectoryName(path).
Yalnızca göreli bir ad alabiliyorsanız, kullanın new FileInfo(path).Directory.FullName.
Not olduğunu Pathve FileInfoher iki ad alanında bulunur System.IO.
new FileInfo(path).Directory.FullNameiki durumda da çalışması gerektiğine inanıyorum .
Kullanabilir System.IO.Path.GetDirectory(filename)veya yolu a dönüştürebilir FileInfove kullanabilirsiniz FileInfo.Directory.
Yol ile başka şeyler yapıyorsanız FileInfo, avantajları olabilir.
Path.GetDirectoryNameDosya adını kullanabilir ve iletebilirsiniz.
Bir FileInfonesneyle çalışıyorsanız string, DirectoryNameözellik aracılığıyla dizinin tam yolunun bir temsilini çıkarmanın kolay bir yolu vardır .
FileInfo.DirectoryNameMülkiyetin MSDN üzerinden açıklaması :
Dizinin tam yolunu temsil eden bir dize alır.
Örnek kullanım:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
Link En MSDN belgelerine .
Geçerli Uygulama Yolu'nu aşağıdakileri kullanarak alabilirsiniz:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
İyi şanslar!
Vakanın Path.GetFullPathçoğu için kullanabilirsiniz . Ancak dosya adının nispeten bulunması durumunda da yolu almak istiyorsanız, aşağıdaki genel yöntemi kullanabilirsiniz:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
Örneğin:
GetPath("C:\Temp\Filename.txt") dönüş "C:\Temp\"
GetPath("Filename.txt")current working directorygibi geri dön"C:\Temp\"
Benim durumumda, ben sadece yaptım tam bir yolun (bir dizinin) dizin adını bulmak gerekiyordu:
var dirName = path.Split('\\').Last();
"C:\MyDirectory", değil MyDirectory. Dize manipülasyon yöntemlerini kullanma tavsiyesi risklidir, birçok tuzak vardır, daha çok özel Pathyöntemler kullanın .
Path.GetDirectoryName (Context.Parameters [ "assemblypath"])
Path.GetDirectoryNamediğer birçok cevapta (kabul edilen cevap dahil) belirtilmiştir
@"C:\MyDirectory\MyFile.bat"