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

eri*_*son 13 filesystems naming

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

Jac*_*sen 14

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

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

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

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

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

在Window下,两个系统下的完整路径长度为260个字符.

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

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

Windows下还保留以下文件名:

  • aux,
  • com1,
  • com2,
  • ...
  • com9,
  • lpt1,
  • lpt2,
  • ...
  • lpt9,
  • con,
  • nul,
  • prn

  • 根据Adam提到的文章,aux在Windows中也不是允许的文件名 (5认同)

Ada*_*eld 8

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

  • 仅链接答案在 Stackoverflow 上的价值很低,因为它们可以移动/死亡,这使您的答案对研究人员毫无用处。 (2认同)

Mal*_*ous 6

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

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

ver > "\\?\C:\Users\username\COM1"
Run Code Online (Sandbox Code Playgroud)

现在你将有一个名为COM1的文件,99%的程序将无法打开,如果你试图访问它可能会冻结.

以下是Microsoft文章,解释了这个"文件名称空间"的工作原理.基本上它告诉Windows不要对文本进行任何字符串处理并将其直接传递给文件系统.此技巧还可用于处理长度超过260个字符的路径.


Vin*_*vic 5

不知道时会遇到棘手的Unix陷阱:

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

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

gzip -9vf -- -mydashedfilename
Run Code Online (Sandbox Code Playgroud)