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 Path
ve FileInfo
her iki ad alanında bulunur System.IO
.
new FileInfo(path).Directory.FullName
iki durumda da çalışması gerektiğine inanıyorum .
Kullanabilir System.IO.Path.GetDirectory(filename)
veya yolu a dönüştürebilir FileInfo
ve kullanabilirsiniz FileInfo.Directory
.
Yol ile başka şeyler yapıyorsanız FileInfo
, avantajları olabilir.
Path.GetDirectoryName
Dosya adını kullanabilir ve iletebilirsiniz.
Bir FileInfo
nesneyle çalışıyorsanız string
, DirectoryName
özellik aracılığıyla dizinin tam yolunun bir temsilini çıkarmanın kolay bir yolu vardır .
FileInfo.DirectoryName
Mü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 directory
gibi 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 Path
yöntemler kullanın .
Path.GetDirectoryName (Context.Parameters [ "assemblypath"])
Path.GetDirectoryName
diğer birçok cevapta (kabul edilen cevap dahil) belirtilmiştir
@"C:\MyDirectory\MyFile.bat"