C# Path类常用方法 - 紫尘 时间2013-07-15 18:38:00 博客园-所有随笔区 原文 http://www.cnblogs.com/v10258/p/3191734.html public static string GetExtension(string path) string fileName = @"C:\mydir.old\myfile.ext"; string path = @"C:\mydir.old\"; string extension; extension = Path.GetExtension(fileName); Console.WriteLine("GetExtension('{0}') returns '{1}'", fileName, extension); extension = Path.GetExtension(path); Console.WriteLine("GetExtension('{0}') returns '{1}'", path, extension); // This code produces output similar to the following: // // GetExtension('C:\mydir.old\myfile.ext') returns '.ext' // GetExtension('C:\mydir.old\') returns '' 2.Path.GetFileName 方法 —— 返回指定路径字符串的文件名和扩展名。 public static string GetFileName(string path) string fileName = @"C:\mydir\myfile.ext"; string path = @"C:\mydir\"; string result; result = Path.GetFileName(fileName); Console.WriteLine("GetFileName('{0}') returns '{1}'", fileName, result); result = Path.GetFileName(path); Console.WriteLine("GetFileName('{0}') returns '{1}'", path, result); // This code produces output similar to the following: // // GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' // GetFileName('C:\mydir\') returns '' 3.Path.GetFullPath 方法 —— 返回指定相对路径字符串的绝对路径. public static string GetFullPath(string path) string fileName = "myfile.ext"; string path1 = @"mydir"; string path2 = @"\mydir"; string fullPath; fullPath = Path.GetFullPath(path1); Console.WriteLine("GetFullPath('{0}') returns '{1}'", path1, fullPath); fullPath = Path.GetFullPath(fileName); Console.WriteLine("GetFullPath('{0}') returns '{1}'", fileName, fullPath); fullPath = Path.GetFullPath(path2); Console.WriteLine("GetFullPath('{0}') returns '{1}'", path2, fullPath); // Output is based on your current directory, except // in the last case, where it is based on the root drive // GetFullPath('mydir') returns 'C:\temp\Demo\mydir' // GetFullPath('myfile.ext') returns 'C:\temp\Demo\myfile.ext' // GetFullPath('\mydir') returns 'C:\mydir' 4.1 Path.GetTempPath 方法 —— 返回当前用户的临时文件夹的路径。 string tempPath = Path.GetTempPath(); 4.2 Path.GetRandomFileName 方法 —— 返回随机文件夹名或文件名。 public static string GetRandomFileName(); 4.3 Path.GetDirectoryName 方法 —— 返回指定路径字符串的目录信息。 public static string GetDirectoryName(string path ) string filePath = @"C:\MyDir\MySubDir\myfile.ext"; string directoryName; int i = 0; while (filePath != null) { directoryName = Path.GetDirectoryName(filePath); Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", filePath, directoryName); filePath = directoryName; if (i == 1) { filePath = directoryName + @"\"; // this will preserve the previous path } i++; } /* This code produces the following output: GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir' GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir' GetDirectoryName('C:\MyDir\') returns 'C:\MyDir' GetDirectoryName('C:\MyDir') returns 'C:\' GetDirectoryName('C:\') returns '' */ View Code 5.Path.ChangeExtension 方法 —— 更改路径字符串的扩展名。 public static string ChangeExtension(string path,string extension) using System; using System.IO; public class PathSnippets { public void ChangeExtension() { string goodFileName = @"C:\mydir\myfile.com.extension"; string badFileName = @"C:\mydir\"; string result; result = Path.ChangeExtension(goodFileName, ".old"); Console.WriteLine("ChangeExtension({0}, '.old') returns '{1}'", goodFileName, result); result = Path.ChangeExtension(goodFileName, ""); Console.WriteLine("ChangeExtension({0}, '') returns '{1}'", goodFileName, result); result = Path.ChangeExtension(badFileName, ".old"); Console.WriteLine("ChangeExtension({0}, '.old') returns '{1}'", badFileName, result); // This code produces output similar to the following: // // ChangeExtension(C:\mydir\myfile.com.extension, '.old') returns 'C:\mydir\myfile.com.old' // ChangeExtension(C:\mydir\myfile.com.extension, '') returns 'C:\mydir\myfile.com.' // ChangeExtension(C:\mydir\, '.old') returns 'C:\mydir\.old' View Code 6. Path.Combine 方法 —— 将2-4个字符串组合成一个路径。 public static string Combine(string path1, string path2,* string path3,* string path2 ) using System; using System.IO; public class ChangeExtensionTest { public static void Main() { string path1 = "c:\\temp"; string path2 = "subdir\\file.txt"; string path3 = "c:\\temp.txt"; string path4 = "c:^*&)(_=@#'\\^.*(.txt"; string path5 = ""; string path6 = null; CombinePaths(path1, path2); CombinePaths(path1, path3); CombinePaths(path3, path2); CombinePaths(path4, path2); CombinePaths(path5, path2); CombinePaths(path6, path2); } private static void CombinePaths(string p1, string p2) { try { string combination = Path.Combine(p1, p2); Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment.NewLine, combination); } catch (Exception e) { if (p1 == null) p1 = "null"; if (p2 == null) p2 = "null"; Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment.NewLine, e.Message); } Console.WriteLine(); } } // This code produces output similar to the following: // // When you combine 'c:\temp' and 'subdir\file.txt', the result is: // 'c:\temp\subdir\file.txt' // // When you combine 'c:\temp' and 'c:\temp.txt', the result is: // 'c:\temp.txt' // // When you combine 'c:\temp.txt' and 'subdir\file.txt', the result is: // 'c:\temp.txt\subdir\file.txt' // // When you combine 'c:^*&)(_=@#'\^.*(.txt' and 'subdir\file.txt', the result is: // 'c:^*&)(_=@#'\^.*(.txt\subdir\file.txt' // // When you combine '' and 'subdir\file.txt', the result is: // 'subdir\file.txt' // // You cannot combine '' and 'subdir\file.txt' because: // Value cannot be null. // Parameter name: path1