文件名中的无效字符

时间:2012-07-30 12:03:01

标签: c#

根据MSDN,以下字符不能是文件名的一部分:

  

使用当前代码页中的任何字符作为名称,包括扩展字符集(128-255)中的Unicode字符和字符,但以下情况除外:

     

◦以下保留字符:

     
      
  • <(小于)
  •   
  • >(大于)
  •   
  • :(冒号)
  •   
  • "(双引号)
  •   
  • /(正斜杠)
  •   
  • \(反斜杠)
  •   
  • |(垂直条或竖线)
  •   
  • ?(问号)
  •   
  • *(星号)
  •   

在.net中提供api以查找文件名中不允许的字符

char[] invalidFileChars = Path.GetInvalidFileNameChars();
  

说明

     

不保证从此方法返回的数组包含在文件名和目录名中无效的完整字符集。完整的无效字符集可能因文件系统而异。例如,在基于Windows的桌面平台上,无效路径字符可能包括ASCII / Unicode字符1到31,以及quote(“),小于(&lt;),大于(&gt;),pipe(|),退格(\ b),null(\ 0)和制表符(\ t)。

但是在备注部分,据说它取决于文件系统。

将此api用于基于Windows的操作系统(如XP和Windows 7)是否安全?

2 个答案:

答案 0 :(得分:1)

是的,在基于ASCII的文件系统中,Path.GetInvalidFileNameChars()将保证您有一个安全的文件名。如果您选中ASCII chart here,则会发现排除了左列中的所有内容,并且还排除了其余列中的某些字符。检查返回数组中每个 char 的十进制表示形式,以获取排除内容的完整列表。

答案 1 :(得分:0)

第一部分是指定语言本身禁止的字符。但是,由于类是从具有特定名称的文件(在大多数平台上)加载的,因此基础平台可能会因文件系统而施加额外的限制。在Java中也是如此,尽管您可以通过使用自定义类加载器在技术上解决它。