System.IO.Path中是否内置了任何只提供文件路径的内容?

例如,如果我有一个字符串

@“c: \服务器\ public \ myCompany \ configs \促进. xml ",

有什么BCL方法可以给我吗

“c: \ \ public \ myCompany配置web服务器”?


当前回答

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

    string currentDirectory = Path.GetDirectoryName(fileAndPath);

    string fullPathOnly = Path.GetFullPath(currentDirectory);

currentDirectory: c: \网络服务器\ \ myCompany \配置 fullPathOnly: c: \网络服务器\ \ myCompany \配置

其他回答

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

    string currentDirectory = Path.GetDirectoryName(fileAndPath);

    string fullPathOnly = Path.GetFullPath(currentDirectory);

currentDirectory: c: \网络服务器\ \ myCompany \配置 fullPathOnly: c: \网络服务器\ \ myCompany \配置

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

您可以先在路径上测试File.Exists()和/或Directory.Exists()来验证是否需要调用path。GetDirectoryName

Path.GetDirectoryName()返回目录名,所以对于你想要的(带有后面的反向solidus字符),你可以调用Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar。

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

我用了这个,效果很好:

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));
        }
    }
}