Який найпростіший спосіб отримати каталог, у якому знаходиться файл? Я використовую це для встановлення робочого каталогу.
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"