我知道/
在Linux中是非法的,下面是在Windows中是非法的
(我认为)*
.
"
/
\
[
]
:
;
|
,
我还缺少什么?
不过,我需要一份综合指南,并且需要考虑到 双字节字符。链接到外部资源对我来说很好。
我需要首先在文件系统上创建一个目录,使用的名称可能 包含禁止字符,所以我打算将这些字符替换为 下划线。然后我需要将此目录及其内容写入一个 zip 文件 (使用 Java),因此有关 zip 目录名称的任何其他建议 将不胜感激。
最佳答案
禁止的可打印 ASCII 字符是:
Linux/Unix:
/ (forward slash)
window :
< (less than)
> (greater than)
: (colon - sometimes works, but is actually NTFS Alternate Data Streams)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
不可打印的字符
如果您的数据来自允许使用不可打印字符的来源,则需要检查更多内容。
Linux/Unix:
0 (NULL byte)
window :
0-31 (ASCII control characters)
注意: 虽然在 Linux/Unix 文件系统下创建文件名中带有控制字符的文件是合法的,但 it might be a nightmare for the users to deal with such files .
保留文件名
保留以下文件名:
window :
CON, PRN, AUX, NUL
COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9
(单独使用和具有任意文件扩展名,例如 LPT1.txt
)。
其他规则
window :
文件名不能以空格或点结尾。
macOS:
您没有要求它,但以防万一:不允许冒号 :
和正斜杠 /
取决于上下文(例如,Finder 支持斜杠,终端支持冒号)。 (More details)
https://stackoverflow.com/questions/1976007/