从包含文件名的路径获取没有文件名的完整路径

时间:2010-09-30 00:02:10

标签: c# file path

System.IO.Path内置了什么内容,只提供了文件路径?

例如,如果我有string

  

@ “C:\网络服务器\公共\ myCompany中\ CONFIGS \ promo.xml”,

是否有任何BCL方法可以给我

  

“C:\网络服务器\公共\ myCompany中\ CONFIGS \”?

6 个答案:

答案 0 :(得分:206)

Path.GetDirectoryName() ...但您需要知道传递给它的路径确实包含文件名;它只是从路径中删除最后一位,无论是文件名还是目录名(它实际上不知道哪个)。

您可以首先通过首先测试路径中的File.Exists()和/或Directory.Exists()进行验证,看看是否需要致电Path.GetDirectoryName

答案 1 :(得分:61)

Console.WriteLine(Path.GetDirectoryName(@"C:\hello\my\dear\world.hm")); 

答案 2 :(得分:48)

Path.GetDirectoryName()返回目录名称,因此对于您想要的内容(使用尾随反向固定字符),您可以调用Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar

答案 3 :(得分:5)

如图所示使用'GetParent()',效果很好。 根据需要添加错误检查。

var fn = openFileDialogSapTable.FileName;
var currentPath = Path.GetFullPath( fn );
currentPath = Directory.GetParent(currentPath).FullName;

答案 4 :(得分: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 :(得分:4)

    string fileAndPath = @"c:\webserver\public\myCompany\configs\promo.xml";

    string currentDirectory = Path.GetDirectoryName(fileAndPath);

    string fullPathOnly = Path.GetFullPath(currentDirectory);