Получить полный путь без имени файла из пути, который включает имя файла

Есть ли что-нибудь встроенное в 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;