Как получить каталог из полного пути файла?

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

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

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

Ответ 1

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

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

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

Ответ 2

System.IO.Path.GetDirectoryName(filename)

Ответ 3

Path.GetDirectoryName(filename);

Ответ 4

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

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

Ответ 5

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

Ссылка MSDN

Ответ 6

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

Path.GetDirectoryName(filename);

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

Ответ 7

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

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

Удачи!

Ответ 8

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

Ответ 9

Во-первых, вы должны использовать пространство имен System.IO. Тогда;

string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);

или

string newPath = Path.GetFullPath(openFileDialog1.FileName));

Ответ 10

Вы можете использовать Path.GetFullPath для большинства случаев. Но если вы хотите получить путь также в случае, если имя файла относительно расположено, вы можете использовать следующий общий метод:

string GetPath(string filePath)
{
  return Path.GetDirectoryName(Path.GetFullPath(filePath))
}

Например:

GetPath("C:\Temp\Filename.txt") return "C:\Temp\"

GetPath("Filename.txt") return current working directory like "C:\Temp\"

Ответ 11

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

var dirName = path.Split('\\').Last();

Ответ 12

Path.GetDirectoryName(Context.Parameters [ "assemblypath"])