我不是在询问文件名的一般语法规则。我的意思是陷入困境并陷入困境的陷阱。例如,尝试将文件命名为“COM< n>”在Windows上?
答案 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访问其中一些名称需要使用转义序列。
-
”和“--
”开头的文件是shell的痛苦,因为这些字符序列是由应用程序解释的,而不是shell。 / p>