亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺析C#中文件路徑的操作

 更新時間:2016年12月08日 16:13:32   作者:Brook_icv  
在.NET類庫中,有一個專門的功能類System.IO.Path,對表示文件或在目錄路徑的string進(jìn)行操作。本文介紹下利用Path來對文件路徑進(jìn)行的一些經(jīng)常用操作。感興趣的朋友可以看下

在程序中對文件操作是非常常見的,而對文件的操作則不可避免的需要文件的路徑,并對文件的路徑進(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ù)

  • Path.GetRandomFileName() 獲取一個隨機(jī)的文件名或者目錄名
  • Path.GetTempFileName() 創(chuàng)建磁盤上唯一命名的零字節(jié)的一個臨時文件并返回該文件的完整路徑
  • Path.GetTempPath() 獲取當(dāng)前用戶的臨時目錄路徑
  • Path.HasExtension() 確定路徑是否包含文件擴(kuò)展名

獲取和應(yīng)用程序相關(guān)的路徑

  • System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 獲取模塊的完整路徑,包括文件名。
  • System.Environment.CurrentDirectory 獲取或設(shè)置應(yīng)用程序當(dāng)前工作目錄的完全限定路徑
  • System.IO.Directory.GetCurrentDirectory() 獲取或設(shè)置應(yīng)用程序的當(dāng)前工作目錄,不一定是應(yīng)用程序的啟動目錄,是應(yīng)用程序最后一次操作過的目錄。

環(huán)境變量相關(guān)

使用System.Environment.GetEnvironmentVariable()能夠獲取和環(huán)境變量相關(guān)的文件路徑,例如:

  • System.Environment.GetEnvironmentVariable("windir") 獲取操作系統(tǒng)所在的目錄
  • System.Environment.GetEnvironmentVariable("INCLUDE") 獲取頭文件所在的目錄
  • System.Environment.GetEnvironmentVariable("TMP") 獲取臨時目錄
  • System.Environment.GetEnvironmentVariable("Path") 獲取Path環(huán)境變量所包含的文件目錄

自然,使用System.Environment.SetEnvironmentVariable() 能夠設(shè)置環(huán)境變量

相關(guān)文章

  • C#使用ZXing實(shí)現(xiàn)二維碼和條形碼的生成

    C#使用ZXing實(shí)現(xiàn)二維碼和條形碼的生成

    這篇文章主要為大家詳細(xì)介紹了C#如何使用ZXing實(shí)現(xiàn)二維碼和條形碼的生成與識別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • wpf將表中數(shù)據(jù)顯示到datagrid示例

    wpf將表中數(shù)據(jù)顯示到datagrid示例

    這篇文章主要介紹了wpf將表中數(shù)據(jù)顯示到datagrid示例,需要的朋友可以參考下
    2014-02-02
  • C#如何取硬件標(biāo)志

    C#如何取硬件標(biāo)志

    C#如何取硬件標(biāo)志...
    2007-03-03
  • C#中Dapper的使用教程

    C#中Dapper的使用教程

    Dapper是一款輕量級ORM工具(Github),Dapper語法十分簡單。并且無須遷就數(shù)據(jù)庫的設(shè)計,今天通過本文給大家介紹C# Dapper的使用,感興趣的朋友一起看看吧
    2021-07-07
  • C#調(diào)用C++ DLL bool返回值始終為true的問題

    C#調(diào)用C++ DLL bool返回值始終為true的問題

    這篇文章主要介紹了C#調(diào)用C++ DLL bool返回值始終為true的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C#算法之整數(shù)反轉(zhuǎn)

    C#算法之整數(shù)反轉(zhuǎn)

    這篇文章介紹了C#算法之整數(shù)反轉(zhuǎn),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#文件路徑操作詳細(xì)總結(jié)

    C#文件路徑操作詳細(xì)總結(jié)

    本篇文章主要是對C#中的文件路徑操作進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 基于C# wpf 實(shí)現(xiàn)Grid內(nèi)控件拖動詳情

    基于C# wpf 實(shí)現(xiàn)Grid內(nèi)控件拖動詳情

    這篇文章主要介紹了基于C# wpf 實(shí)現(xiàn)Grid內(nèi)控件拖動,有一些業(yè)務(wù)場景中我們需要拖動控件,在Grid中就可以實(shí)現(xiàn)控件拖動,通過設(shè)置Margin屬性即可,下面文章我們來看看具體的實(shí)現(xiàn)內(nèi)容
    2021-11-11
  • C#計算字符串相似性的方法

    C#計算字符串相似性的方法

    這篇文章主要介紹了C#計算字符串相似性的方法,實(shí)例分析了C#計算字符串相似性的原理與算法實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)坦克大戰(zhàn)游戲

    C#實(shí)現(xiàn)坦克大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論