C# Path类常用方法
Path 类
对包含文件或目录路径信息的 String 实例执行操作。
1.Path.GetExtension 方法 —— 返回指定的路径字符串的扩展名。
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 '' */
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'
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