在程序中對文件操作是非常常見的,而對文件的操作則不可避免的需要文件的路徑,并對文件的路徑進(jìn)行一系列的操作,例如:判斷已知的路徑是一個目錄還是一個文件,路勁是一個文件則該文件的名稱是什么,文件的擴(kuò)展名名是什么等等。在C#中并并沒有將文件的路徑抽象為一個類,用來表示文件路徑就是一個普通的字符串。對文件路徑的操作例如,要獲取文件名稱,可以通過截取字符串或者使用正則表達(dá)式來取得。
其實(shí),在.NET類庫中,有一個專門的功能類System.IO.Path,對表示文件或在目錄路徑的string進(jìn)行操作。下面介紹下利用Path來對文件路徑進(jìn)行的一些誒常用操作。
判斷給出的路徑或者文件名是否合法
Path.GetInvalidFileNameChars() 該方法返回一個char[] 指出不能在文件名中出現(xiàn)的字符。
/// <summary>  /// 判斷文件名是否合法  /// </summary>  /// <param name="fileName">文件名</param>  /// <returns>ture,合法;false,非法</returns>  public bool validFileName(string fileName)  {   if(!string.IsNullOrEmpty(fileName))   {    char [] errChars = Path.GetInvalidFileNameChars() ;    foreach(char ch in errChars)    {     if(fileName.Contains(ch.ToString()))      return false ;    }   }   else   {    return false ;   }   return true ;  }假如文件名稱是非法的,可以利用下面的方法,移除非法字符
/// <summary>  /// 除掉文件名中的非法字符  /// </summary>  /// <param name="fileName"></param>  /// <returns>合法的文件名</returns>  public string fixedFileName(string fileName)  {   char[] errChars = Path.GetInvalidFileNameChars();   StringBuilder fileNameBuilder = new StringBuilder(fileName) ;   foreach(char ch in errChars)   {    fileNameBuilder.Replace(ch.ToString(),string.Empty);   }   return fileNameBuilder.ToString();  }同理使用Path.GetInvalidPathChars()來獲取不能在目錄路徑中出現(xiàn)的字符,來判斷給出的目錄路徑是否合法,并且對非法的目錄路徑進(jìn)行修改。
判斷給出的路徑是目錄路徑還是文件路徑
如果能夠確定給出的路徑是已經(jīng)存在的,那么可以使用Directory.Exists()和File.Exists()來判斷路徑是目錄還是文件。不能確定給定的路徑存在,可以使用Path.GetFileName()獲取路徑中的文件名,如能取到文件名顯然路徑是一個文件路徑,如不能則是路徑。說明,目錄路徑的最后一個字符應(yīng)該是以'/'來結(jié)束。
合并路徑
有些路徑的不同部分是從不同的地方取得,這是需要將這些部分進(jìn)行組合,形成一個完整的路徑。在組合的過程中不可避免的要涉及到對”/”的處理,這時可以使用Path.Combine()把路徑的不同部分組合到一起。Path.Combine()有多種形式的重載,滿足不同的需求。需要說明的是,在用Path.Combine()不接受不合法的文件名或者路徑名,并且在合并時,如果某一個部分是從絕對路徑開始的,則合并操作重置為從該絕對路徑開始,舍棄前面的已經(jīng)合并的路徑。例如:
string[] paths = {@"d:/archives", "2001", "e://", "images"};   string fullPath = Path.Combine(paths);   //fullPath 為 e:/images   Console.WriteLine(fullPath);fullPath為e:/images獲取路徑的特定部分,如:文件名,擴(kuò)展名,文件目錄等
Path.GetFileName(path);//獲取文件名 Path.GetFileNameWithoutExtension(path); //獲取文件名,不帶擴(kuò)展名 Path.GetExtension(path) ; //獲取文件擴(kuò)展名 Path.GetDirectoryName(path) ; //獲取文件目錄 Path.GetPathRoot(path) ;//獲取根目錄信息
更具體的可以參看MSDN http://msdn.microsoft.com/zh-cn/library/system.io.path_methods.aspx
Path其它的一些功能函數(shù)
獲取和應(yīng)用程序相關(guān)的路徑
環(huán)境變量相關(guān)
使用System.Environment.GetEnvironmentVariable()能夠獲取和環(huán)境變量相關(guān)的文件路徑,例如:
自然,使用System.Environment.SetEnvironmentVariable() 能夠設(shè)置環(huán)境變量
新聞熱點(diǎn)
疑難解答
圖片精選