Как получить каталог из полного пути файла?
каков самый простой способ получить каталог, в котором находится файл? Я использую это, чтобы установить рабочий каталог.
string filename = @"C:MyDirectoryMyFile.bat";
в этом примере я должен получить "C:MyDirectory".
12 ответов
если у вас определенно есть абсолютный путь, используйте Path.GetDirectoryName(path)
.
если вы можете получить только относительное имя, используйте new FileInfo(path).Directory.FullName
.
отметим, что Path
и FileInfo
оба находятся в пространстве имен System.IO
.
можно использовать System.IO.Path.GetDirectory(filename)
, или превратить путь в FileInfo
, и использовать FileInfo.Directory
.
если вы делаете другие вещи с пути,FileInfo
может иметь преимущества.
использовать указанные ниже код, чтобы получить путь к папке
Path.GetDirectoryName(filename);
возвращает "C:\MyDirectory" в вашем случае
если вы работаете с 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();
Удачи!
в моем случае мне нужно было найти имя каталога полного пути (каталога), поэтому я просто сделал:
var dirName = path.Split('\').Last();
во-первых, вы должны использовать систему.Пространство имен IO. Затем:
string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);
или
string newPath = Path.GetFullPath(openFileDialog1.FileName));
можно использовать 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\"
просто incase кто-то еще нуждается в этом, что я использовал для моего относительного пути:
string rootPath = "MyRootDir/MyFolder1/MyFolder2/myFile.pdf";
while (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(rootPath)))
{
rootPath = Path.GetDirectoryName(rootPath);
}
Console.WriteLine(rootPath); //Will print: "MyRootDir"