一、目的
明白什么字符可以用于文件或文件夹的命名。
二、分析
首先是windows提示语:
2.1规则
-
全部内容不能包含:
- 斜杠 /
- 反斜杠 \
- 英文冒号 :
- 乘法符号(星号) *
- 英文问号 ?
- 英文双引号 "
- 左右尖括号 <>
- 或逻辑符号 |
- 原因猜测windows在抓取文件名称的时候是每个名字拼接起来形成字符串,且以反斜杠区分,在正则查找文件时为避免正则抓取失败所以正则相关符号也不能使用,在字符串描述中,c语言以双引号为字符串区分所以双引号无法使用,或者也有在windows系统中会使用双引号锁定地址防止篡改的作用,左右尖括号在命令行中会被使用。
-
首尾字母不能包含
- 空格,中英文空格都不能包含在首尾,虽然可以写入,但是并不会被存储。
-
其他字符
- 可通过程序写入,可形成无法删除的文件或不可显示名称的文件
- 可插入unicode控制字符,从而形成不可显示的文件名
-
长度规则
- 基本规则全称加一起长度不超过255字符
- 创建文件夹举例如图:
- 这是最极限的能创建出来一个文件夹的情况,进行说明:要创建一个文件夹要满足以下条件,当前文件夹的名称长度(242)+进入即将要创建出的文件内的一个反斜杠路径(1)+默认名字”新建文件夹“(10)+进入新建文件夹内的一个反斜杠路径(1)+此路径下至少保留一个字符名称(1)共同构成255极限情况。
- 创建文件举例如图:
- 此时创建出的文件无初始名称,且并不会出现必须输入名称的警告:
- 所以通过这种方法可以生成出无名称的文件:
-
其他规则:
- 以上限制仅限于在创建阶段,当创建好后修改父目录的文件名过长可以禁止其子目录下创建新文件。但读写过长路径下的文件内容正常。
- 无法删除的规则:
- 因通过上述操作导致包含超越255路径的文件时,整个文件夹则无法删除,可通过移动或修改名称的方式使其文件名称缩短后再删除。
三、总结
以字符串的形式来理解路径问题就好很多了。是路径首先要是字符串,是路径就要与正则表达式互斥,且长度数据用一位字节表示,0xff即255长度。
哎,银雀斯汀。