谢邀。
1、Windows下的文件和文件夹命名规则
(1)文件或者文件夹名称不得超过255个字符;
(2)文件名除了开头之外任何地方都可以使用空格;
(3)禁用如下字符:/\?*:"<>|;(最后的分号是这个句子的标点符号,不是禁用符号)
(4) 文件名不区分大小写,但在显示时可以保留大小写格式。
2、DOS保留设备名
DOS时代,访问设备是通过访问特殊文件名实现的,因此这些特殊文件名是保留名,不能使用。虽然DOS时代已经过去20多年快30年了,但这些保留名依然有效,不能使用。
发现这个问题还是一次自动生成n多图像文件,我把文件按顺序生成序号,然后把序号转换成大写英文字母和数字的编码(相当于36进制)作为文件名。在win10上,C#的程序跑到一些并没有特殊意义的数字那里就各种崩,提示没有权限。然后给了管理员权限不行,又给了 TrustedInstaller权限还是不行。只好用 matlab重写了一遍,给出了这个提示(Warning后面那个提示),才记起还有DOS保留设备名这个东西。
DOS保留设备名包括:
CON 作为输入用的文件名,指键盘
AUX或COM1 作为输出用的文件名,指屏幕
COM2 第一串行口
COM3 第二串行口
COM4 第三串行口
LPT1 或PRN 第四串行
LPT1 第一并行口或者打印机
LPT2 第二并行口
LPT3 第三并行口
PRN 打印机
NUL 空设备
3、关于“文件夹名字写太长或者用了中文一类的原因而导致游戏出现这样或那样的bug”
这个应该是程序员的锅,比如写程序时,随便定义个char[100]甚至char[20]都是很正常的,那么超过这个长度肯定出问题。
中文则一般是编码问题,使用了不同的解码方案或者程序本身没考虑中文,没有解码直接使用。
4、空格问题
这个也是程序员的锅。有些程序员喜欢把一些字符串在一起,然后用个特殊符号隔开,拆分的时候用个split就搞定了。然而,有的程序员在选择特殊字符时很随意,比如选用了空格,又没对字符串中原有的空格进行转义,就出现了错误。
-----20190706补充---------
感谢@wo哭了谁会心疼,.(小数点)也不能放最前面
-----20190708再补充---------
感谢各位知优的积极讨论,我以为我写的很仔细了,但还是有之前不知道的盲区,也有本来知道但忽略了的东西,在此再补充一下。
感谢@伤心的笔,小数点和空格是不能在最前也不能在最后的,我之前只知道不能在最前,没有试过在最后的情况,亲测确实最前最后都不可以。
感谢@tpxxn@Cyril Chen,两位说win10最新版1903支持小数点在最前了,我没有升级到这个版本,未测,但我相信是这样的,毕竟试一下就可以了,哈哈。
另外win10中(包括以前版本)