Получить полный путь без имени файла из пути, который включает имя файла
Есть ли что-нибудь встроенное в System.IO.Path
, которое дает мне только путь к файлу?
Например, если у меня есть string
@ "C:\вебсервер\Public\моякомп\конфиги\promo.xml",
есть ли какой-нибудь метод BCL, который даст мне
"C:\вебсервер\Public\моякомп\конфиги \"?
Ответы
Ответ 1
Path.GetDirectoryName()
... но вам нужно знать, что путь, который вы передаете ему, содержит имя файла; он просто удаляет финальный бит из пути, является ли это именем файла или именем каталога (на самом деле он не знает, что).
Сначала вы можете проверить, сначала проверив File.Exists()
и/или Directory.Exists()
на своем пути, чтобы узнать, нужно ли вам звонить Path.GetDirectoryName
Ответ 2
Console.WriteLine(Path.GetDirectoryName(@"C:\hello\my\dear\world.hm"));
Ответ 3
Path.GetDirectoryName()
возвращает имя каталога, поэтому для того, что вы хотите (с символом обратного обратного солидуса), вы можете вызвать Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar
.
Ответ 4
Я использовал это, и он хорошо работает:
string[] filePaths = Directory.GetFiles(Path.GetDirectoryName(dialog.FileName));
foreach (string file in filePaths)
{
if (comboBox1.SelectedItem.ToString() == "")
{
if (file.Contains("c"))
{
comboBox2.Items.Add(Path.GetFileName(file));
}
}
}
Ответ 5
Использовать "GetParent()", как показано, работает красиво. Добавьте проверку ошибок, как вам нужно.
var fn = openFileDialogSapTable.FileName;
var currentPath = Path.GetFullPath( fn );
currentPath = Directory.GetParent(currentPath).FullName;