Каков самый простой способ получить каталог, в котором находится файл? Я использую это, чтобы установить рабочий каталог.
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
.
System.IO.Path.GetDirectoryName(filename)
Path.GetDirectoryName(filename);
Вы можете использовать System.IO.Path.GetDirectory(filename)
или включить путь в FileInfo
и использовать FileInfo.Directory
.
Если вы делаете другие вещи с помощью пути, FileInfo
может иметь преимущества.
Вы можете использовать Path.GetDirectoryName
и просто передать имя файла.
Используйте приведенный ниже код, чтобы получить путь к папке
Path.GetDirectoryName(filename);
Это вернет "C:\MyDirectory" в вашем случае
Вы можете получить текущий путь приложения, используя:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
Удачи!
Если вы работаете с объектом 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.
Во-первых, вы должны использовать пространство имен System.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")
return "C:\Temp\"
GetPath("Filename.txt")
return current working directory
like "C:\Temp\"
В моем случае мне нужно было найти имя каталога полного пути (каталога), поэтому я просто сделал:
var dirName = path.Split('\\').Last();
Path.GetDirectoryName(Context.Parameters [ "assemblypath"])