为什么文件名不能包含下列任何字符 /:*?“<>|

/ 是路径分割符(Windows的路径分隔符是反斜杠,但处理文件的API接受带正斜杠的路径名)。
< > 是输入输出重定向,比如想把foo.exe的输出重定向到文件abc.txt::foo > abc.txt;把anc.txt的内容输入给foo.exe:foo < abc.txt。
: 是用来区分盘符,比如C: D:。
“ 是用来标记带空格的路径,比如"C:Program Files"。
| 是管道,把一个程序的输出作为另一个程序的输入,比如type命令查看文件内容,但如果文件很大一屏显示不下的话就需要把输出通过管道给more命令,这样每输出满一屏就会停下来直到你按键再输出下一屏: type abc.txt | more。

除了这把个字符,Windows还不允许文件名包含空字符(NULL,U+0000)。

PS:Windows不允许只包含点的文件名,比如.,..,...等等,因为Windows中.代表当前文件夹而..代表上一级文件夹。



作者:0xB160C0C5
链接:https://www.zhihu.com/question/38751059/answer/100736932
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/suntp/p/9809186.html