System.IO.Path中是否内置了任何只给我文件路径的东西?
System.IO.Path
例如,如果我有一个string
string
@“c: \网络服务器\公共\ myCompany \配置\ promo.xml”,
有什么BCL方法可以给我吗
“c: \网络服务器\公共\ myCompany \配置\”?
Path.GetDirectoryName()……但是你需要知道你传递给它的路径确实包含一个文件名;它只是从路径中删除最后一位,不管它是文件名还是目录名(实际上它不知道是哪个)。
Path.GetDirectoryName()
你可以先在你的路径上测试File.Exists()和/或Directory.Exists()来验证是否需要调用Path.GetDirectoryName
File.Exists()
Directory.Exists()
Path.GetDirectoryName
Console.WriteLine(Path.GetDirectoryName(@"C:\hello\my\dear\world.hm"));
Path.GetDirectoryName()返回目录名,所以对于你想要的(带有结尾的倒固字字符),你可以调用Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar。
Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar
我用了这个,效果很好:
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)); } } }
如所示使用GetParent(),效果很好。根据需要添加错误检查。
GetParent()
var fn = openFileDialogSapTable.FileName; var currentPath = Path.GetFullPath( fn ); currentPath = Directory.GetParent(currentPath).FullName;
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 \配置
currentDirectory: c: \网络服务器\ \ myCompany \配置
fullPathOnly: c: \网络服务器\ \ myCompany \配置