C#不能用于文件名的字符怎么辦-創(chuàng)新互聯(lián)

這篇文章主要介紹了C# 不能用于文件名的字符怎么辦,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)長(zhǎng)期為上千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏(yíng)平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為四川企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站制作、做網(wǎng)站,四川網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

在 Windows 有一些字符是不能作為文件名,嘗試重命名一個(gè)文件,輸入/ 就可以看到windows 提示的不能作為文件名的字符

C# 不能用于文件名的字符怎么辦

那么具體是包括哪些符號(hào)不能作為文件名?

  • Tilde (~)

  • Number sign (#)

  • Percent (%)

  • Ampersand (&)

  • Asterisk (*)

  • Braces ({ })

  • Backslash (\)

  • Colon (:)

  • Angle brackets (< >)

  • Question mark (?)

  • Slash (/)

  • Plus sign (+)

  • Pipe (|)

  • Quotation mark (")

上面這些字符不能用來(lái)文件名和文件夾名

而且在 windows 的要求,文件是需要有文件名的,雖然你也可以創(chuàng)建.file這樣的文件,但是用戶(hù)是難以自己輸入這樣的文件名。

之外還有一些文件名是保留,不能創(chuàng)建這樣的文件名

CON, PRN, AUX, CLOCK$, NUL
COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.

嘗試新建一個(gè)文本,然后把他文件名命名為上面的任意一個(gè),基本windows會(huì)說(shuō)不能把文件命名

那么是不是把這些字符串拿出來(lái)判斷?實(shí)際上微軟已經(jīng)做了這個(gè)了,因?yàn)樵诓煌南到y(tǒng),可能之后會(huì)添加新的字符串,所以最好不要自己寫(xiě)。

可以使用微軟給的函數(shù)System.IO.Path.GetInvalidFileNameChars ,下面的代碼可以直接使用

 public static string MakeValidFileName(string text, string replacement = "_")
  {
   StringBuilder str=new StringBuilder();
   var invalidFileNameChars = System.IO.Path.GetInvalidFileNameChars();
   foreach (var c in text)
   {
    if (invalidFileNameChars.Contains(c))
    {
     str.Append(replacement??"");
    }
    else
    {
     str.Append(c);
    }
   }
   return str.ToString();
  }

如果確實(shí)需要顯示文件名,請(qǐng)使用下面代碼

public static string GetSafeFilename(string arbitraryString)
{
 var invalidChars = System.IO.Path.GetInvalidFileNameChars();
 var replaceIndex = arbitraryString.IndexOfAny(invalidChars, 0);
 if (replaceIndex == -1) return arbitraryString;
 var r = new StringBuilder();
 var i = 0;
 do
 {
  r.Append(arbitraryString, i, replaceIndex - i);
  switch (arbitraryString[replaceIndex])
  {
   case '"':
    r.Append("''");
    break;
   case '<':
    r.Append('\u02c2'); // '?' (modifier letter left arrowhead)
    break;
   case '>':
    r.Append('\u02c3'); // '?' (modifier letter right arrowhead)
    break;
   case '|':
    r.Append('\u2223'); // '∣' (divides)
    break;
   case ':':
    r.Append('-');
    break;
   case '*':
    r.Append('\u2217'); // '?' (asterisk operator)
    break;
   case '\\':
   case '/':
    r.Append('\u2044'); // '?' (fraction slash)
    break;
   case '\0':
   case '\f':
   case '?':
    break;
   case '\t':
   case '\n':
   case '\r':
   case '\v':
    r.Append(' ');
    break;
   default:
    r.Append('_');
    break;
  }
  i = replaceIndex + 1;
  replaceIndex = arbitraryString.IndexOfAny(invalidChars, i);
 } while (replaceIndex != -1);
 r.Append(arbitraryString, i, arbitraryString.Length - i);
 return r.ToString();
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“C# 不能用于文件名的字符怎么辦”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都做網(wǎng)站,關(guān)注創(chuàng)新互聯(lián)成都做網(wǎng)站行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:C#不能用于文件名的字符怎么辦-創(chuàng)新互聯(lián)
文章源于:http://bm7419.com/article8/cesoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、建站公司、網(wǎng)站設(shè)計(jì)公司、虛擬主機(jī)關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)