Який найпростіший спосіб отримати каталог, у якому знаходиться файл? Я використовую це для встановлення робочого каталогу.
string filename = @"C:\MyDirectory\MyFile.bat";
У цьому прикладі я повинен отримати "C: \ MyDirectory".
Який найпростіший спосіб отримати каталог, у якому знаходиться файл? Я використовую це для встановлення робочого каталогу.
string filename = @"C:\MyDirectory\MyFile.bat";
У цьому прикладі я повинен отримати "C: \ MyDirectory".
Відповіді:
Якщо у вас точно є абсолютний шлях, використовуйте Path.GetDirectoryName(path)
.
Якщо ви можете отримати лише відносне ім’я, використовуйте new FileInfo(path).Directory.FullName
.
Зверніть увагу , що Path
і FileInfo
обидва знаходяться в просторі імен System.IO
.
new FileInfo(path).Directory.FullName
має працювати в будь-якому випадку.
System.IO.Path.GetDirectoryName(filename)
Ви можете використовувати System.IO.Path.GetDirectory(filename)
або перетворити шлях на a FileInfo
, і використовувати FileInfo.Directory
.
Якщо ви робите інші речі зі шляху, FileInfo
можливо, це матиме переваги.
Ви можете використовувати Path.GetDirectoryName
та просто передавати ім'я файлу.
Якщо ви працюєте з FileInfo
об'єктом, то існує простий спосіб отримати string
уявлення про повний шлях каталогу через DirectoryName
властивість.
Опис FileInfo.DirectoryName
майна через MSDN:
Отримує рядок, що представляє повний шлях до каталогу.
Використання зразка:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
Посилання на документацію MSDN .
Ви можете отримати поточний шлях програми за допомогою:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
Щасти!
Ви можете використовувати Path.GetFullPath
для більшості випадків. Але якщо ви хочете отримати шлях також у випадку, якщо ім'я файлу розташоване відносно, ви можете скористатися наведеним нижче загальним методом:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
Наприклад:
GetPath("C:\Temp\Filename.txt")
повернення "C:\Temp\"
GetPath("Filename.txt")
повернути current working directory
як"C:\Temp\"
У моєму випадку мені потрібно було знайти ім'я повного шляху (каталогу), тому я просто зробив:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"
і ні MyDirectory
. Поради щодо використання строкових методів маніпуляції ризиковані, пасток багато, скоріше використовувати спеціальні Path
методи.
Path.GetDirectoryName (Context.Parameters ["Assemblypath"])
Path.GetDirectoryName
згадується в багатьох інших відповідях (включаючи прийняту відповідь)
@"C:\MyDirectory\MyFile.bat"