总结:
①Path类是static类型
②常用方法
Path.GetFullPath(file) 取全路径
Path.GetFileName(file) 取文件名,包含扩展名
Path.GetFileNameWithoutExtension(file) 取文件名,不包含扩展名
Path.GetExtension(file) 取扩展名
Path.GetDirectoryName(file) 取路径名
Path.GetPathRoot(file) 取盘符
Path.Combine(file1,file2) 合并2个路径
③注意事项
a.使用前需要对参数进行判空,其次追加try catch来捕获Exception。
string fullpath7 = null; if (!String.IsNullOrWhiteSpace(file)) { try { fullpath7 = Path.GetFullPath(file); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
b.GetFullPath()可以将多个 / 合并为1个,使之格式化为合法的路径。末尾的会保留。
c.GetDirectoryName()结果末尾没有。
d.Combine() 不会合并多个 / ,第二个参数不能以/ 开头。
e.利用GetDirectoryName()和Combine()去掉末尾.
string dir2 = Path.GetDirectoryName(Path.Combine(@"D:1","Temp")); // D:1
string dir3 = Path.GetDirectoryName(Path.Combine(@"D:1", "Temp")); // D:1
④测试
public static void TestPath() { string file = "App.config"; //c:usersqqqsource eposStudyDesignModeStudyDesignModeinDebugApp.config /* 正常用法 */ //取完整路径 string fullpath = Path.GetFullPath(file); //c:usersqqqsource eposStudyDesignModeStudyDesignModeinDebugApp.config //取文件名 string name = Path.GetFileName(@"D:12App.config"); //App.config //取扩展名 string extension = Path.GetExtension(@"D:12App.config"); //.config //取文件名 不带扩展名 string nameWithoutExtension = Path.GetFileNameWithoutExtension(@"D:12App.config"); //App //取所在文件夹 string dir = Path.GetDirectoryName(@"D:12App.config"); //D:12 //取所在磁盘 string root = Path.GetPathRoot(@"D:12App.config"); //D: //连接路径 string combine = Path.Combine(@"1", @"2"); // 12 /* 异常用法 */ //参数为null //string fullpath1 = Path.GetFullPath(null); //Exception //参数为空字符串 //string fullpath2 = Path.GetFullPath(""); //Exception string fullpath3 = Path.GetFullPath(@"D:\//\//dfjk\\1///2/////3"); //D:dfjk123 忽略了多个 / 为1个 。保留了末尾的 。 //无扩展名 string name1 = Path.GetFileName(@"D:12App"); //App //只有扩展名 string name2 = Path.GetFileName(@"D:12.config"); //.config //无文件名 string name3 = Path.GetFileName(@"D:12"); // "" //只有盘符 string name4 = Path.GetFileName(@"D:"); // "" //参数为null string name5 = Path.GetFileName(null); // null //参数为"" string name6 = Path.GetFileName(""); // "" //无扩展名 string extension1 = Path.GetExtension(@"D:12App"); //"" //只有扩展名 string extension2 = Path.GetExtension(@"D:12.config"); //.config //无文件名 string extension3 = Path.GetExtension(@"D:12"); // "" //只有盘符 string extension4 = Path.GetExtension(@"D:"); // "" //参数为null string extension5 = Path.GetExtension(null); // null //参数为"" string extension6 = Path.GetExtension(""); // "" //参数为null //string combine1 = Path.Combine(null,null); // Exception //string combine2 = Path.Combine("", null); // Exception //参数为"" string combine3 = Path.Combine("", ""); // "" //多个/ string combine4 = Path.Combine(@"///1\23", @"4"); // ///1\234 //第二个参数以/开头 string combine5 = Path.Combine(@"///1\23", @"/4"); // /4 //第二个参数以开头 string combine6 = Path.Combine(@"///1\23", @"4"); // 4 //第一个参数以结尾 string combine7 = Path.Combine(@"///1\23\", @"4"); // ///1\23\4 //第一个参数以/结尾 string combine8 = Path.Combine(@"///1\23/", @"4"); // ///1\23/4 //第二个参数以/开头 string combine9 = Path.Combine(@"///1\23", @"/4"); // /4 //第二个参数以开头 string combine10 = Path.Combine(@"///1\23", @"4"); // 4 //取所在文件夹 string dir1 = Path.GetDirectoryName(@"D:12"); //D:12 string dir2 = Path.GetDirectoryName(Path.Combine(@"D:1","Temp")); // D:1 string dir3 = Path.GetDirectoryName(Path.Combine(@"D:1", "Temp")); // D:1 }
补充:
string dir4 = Path.GetDirectoryName(@"\192.168.0.2sharefile_1.txt"); // \192.168.0.2share string root1 = Path.GetPathRoot(@"\192.168.0.2sharefile_1.txt"); // \192.168.0.2share string root2 = Path.GetPathRoot(@"192.168.0.2sharefile_1.txt"); // "" string root3 = Path.GetPathRoot(@"//192.168.0.2sharefile_1.txt"); // \192.168.0.2share string root4 = Path.GetPathRoot(@"//192.168.0.2share12file_1.txt"); // \192.168.0.2share