什么是各种平台的保留文件名?

时间:2008-09-23 17:18:36

标签: filesystems naming

我不是在询问文件名的一般语法规则。我的意思是陷入困境并陷入困境的陷阱。例如,尝试将文件命名为“COM< n>”在Windows上?

7 个答案:

答案 0 :(得分:14)

来自:http://www.grouplogic.com/knowledge/index.cfm/fuseaction/view_Info/docID/111

  

以下字符在使用NTFS的Windows上作为文件或文件夹名称无效:/ ? < > \ : {{ 1}} * |以及您可以使用Ctrl键输入的任何字符。

     

除上述非法字符外,使用FAT文件系统的Windows操作系统下也不允许使用插入符号"

     

在Windows下使用FAT文件系统文件和文件夹名称最长可达255个字符。

     

在Windows下使用NTFS文件系统文件和文件夹名称最长可达256个字符。

     

在“窗口”下,两个系统下的完整路径长度为260个字符。

     

除了这些字符外,以下约定也是非法的:

     
      
  • 在名称的末尾放置一个空格
  •   
  • 在名称末尾添加句点
  •   
     

Windows下也保留以下文件名:

     
      
  • ^
  •   
  • aux
  •   
  • com1
  •   
  • ...
  •   
  • com2
  •   
  • com9
  •   
  • lpt1
  •   
  • ...
  •   
  • lpt2
  •   
  • lpt9
  •   
  • con
  •   
  • nul
  •   

答案 1 :(得分:8)

Windows上合法和非法文件名的完整描述: http://msdn.microsoft.com/en-us/library/aa365247.aspx

答案 2 :(得分:6)

正如其他人所说,像Windows这样的设备名称不可能作为Windows下的文件名,因为它们是保留的设备。

但是,有一种转义方法可以创建和访问具有这些保留名称的文件,例如,此命令会将ver命令的输出重定向到名为COM1的文件中:

ver > "\\?\C:\Users\username\COM1"

现在,您将拥有一个名为COM1的文件,99%的程序无法打开,如果您尝试访问,可能会冻结。

Here's the Microsoft article解释了这个&#34;文件命名空间&#34;作品。基本上它告诉Windows不要对文本进行任何字符串处理并将其直接传递给文件系统。此技巧还可用于处理长度超过260个字符的路径。

答案 3 :(得分:5)

当你不知道时,一个棘手的Unix问题:

以 - 或 - 开头的文件是合法的,但在使用时很痛苦,因为许多命令行工具认为您正在为它们提供选项。

其中许多工具都有一个特殊标记“ - ”表示选项的结束:

gzip -9vf -- -mydashedfilename

答案 4 :(得分:4)

boost :: filesystem Portability Guide有很多好消息。

答案 5 :(得分:2)

那么,对于MSDOS / Windows,NUL,PRN,LPT&lt; n&gt;和CON。如果与扩展名一起使用,它们甚至会引起问题:“NUL.TXT”

答案 6 :(得分:1)

除非您触摸特殊目录,否则Linux上唯一的非法名称为“.”和“..”。任何其他名称都是可能的,尽管从shell访问其中一些名称需要使用转义序列。

编辑:正如Vinko Vrsalovic所说,以“-”和“--”开头的文件是shell的痛苦,因为这些字符序列是由应用程序解释的,而不是shell。 / p>