Как мне получить каталог по полному пути файла? - PullRequest
475 голосов
/ 23 марта 2009

Какой самый простой способ получить каталог, в котором находится файл? Я использую это, чтобы установить рабочий каталог.

string filename = @"C:\MyDirectory\MyFile.bat";

В этом примере я должен получить "C: \ MyDirectory".

Ответы [ 11 ]

754 голосов
/ 23 марта 2009

Если у вас определенно есть абсолютный путь, используйте Path.GetDirectoryName(path).

Если вы можете получить только относительное имя, используйте new FileInfo(path).Directory.FullName.

Обратите внимание, что Path и FileInfo оба находятся в пространстве имен System.IO.

55 голосов
/ 23 марта 2009
System.IO.Path.GetDirectoryName(filename)
21 голосов
/ 23 марта 2009
Path.GetDirectoryName(filename);
12 голосов
/ 23 марта 2009

Вы можете использовать System.IO.Path.GetDirectory(filename) или превратить путь в FileInfo и использовать FileInfo.Directory.

Если вы делаете другие вещи с путем, FileInfo может иметь преимущества.

10 голосов
/ 23 марта 2009

Вы можете использовать Path.GetDirectoryName и просто передать имя файла.

MSDN Link

9 голосов
/ 13 августа 2015

Используйте указанный ниже код, чтобы получить путь к папке

Path.GetDirectoryName(filename);

Это вернет "C: \ MyDirectory" в вашем случае

5 голосов
/ 01 июля 2016

Вы можете получить текущий путь к приложению, используя:

string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();

Удачи!

4 голосов
/ 28 мая 2014

Если вы работаете с объектом 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 .

1 голос
/ 17 июля 2018

В моем случае мне нужно было найти имя каталога полного пути (каталога), поэтому я просто сделал:

var dirName = path.Split('\\').Last();
0 голосов
/ 28 августа 2017

Вы можете использовать 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\"

...