国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

詳解C# 不能用于文件名的字符

2019-10-29 21:02:48
字體:
來源:轉載
供稿:網友

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

C#,文件名字符

那么具體是包括哪些符號不能作為文件名?

  • Tilde (~)
  • Number sign (#)
  • Percent (%)
  • Ampersand (&)
  • Asterisk (*)
  • Braces ({ })
  • Backslash (/)
  • Colon (:)
  • Angle brackets (< >)
  • Question mark (?)
  • Slash (/)
  • Plus sign (+)
  • Pipe (|)
  • Quotation mark (")

上面這些字符不能用來文件名和文件夾名

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

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

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

嘗試新建一個文本,然后把他文件名命名為上面的任意一個,基本windows會說不能把文件命名

那么是不是把這些字符串拿出來判斷?實際上微軟已經做了這個了,因為在不同的系統,可能之后會添加新的字符串,所以最好不要自己寫。

可以使用微軟給的函數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();  }

如果確實需要顯示文件名,請使用下面代碼

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();}

總結

以上所述是小編給大家介紹的C# 不能用于文件名的字符,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郁南县| 阿城市| 富阳市| 新建县| 当涂县| 凭祥市| 瑞昌市| 昌邑市| 泾川县| 宁阳县| 佛山市| 鲁甸县| 常山县| 肇州县| 芜湖县| 卓资县| 大埔区| 江北区| 沾益县| 越西县| 平乡县| 治多县| 上犹县| 白玉县| 大化| 黑河市| 叙永县| 花莲县| 武清区| 太仆寺旗| 梅河口市| 勃利县| 崇信县| 巴中市| 青河县| 天柱县| 乌鲁木齐县| 平利县| 汽车| 阿尔山市| 吉首市|