I know that /
is illegal in Linux, and the following are illegal in Windows (I think) *
.
"
/
\
[
]
:
;
|
,
我还缺少什么?
但是,我需要一份综合指南,并且需要考虑到双字节字符。链接到外部资源对我来说很好。
我需要首先使用可能包含禁止字符的名称在文件系统上创建一个目录,因此我计划用下划线替换这些字符。然后我需要将此目录及其内容写入一个 zip 文件(使用 Java),因此任何有关 zip 目录名称的其他建议将不胜感激。
原文由 Jeff 发布,翻译遵循 CC BY-SA 4.0 许可协议
禁止文件名字符的“综合指南”在 Windows 上不起作用,因为它保留了文件名和字符。是的,像
*
"
?
等字符是被禁止的,但是有无数个名称只由被禁止的有效字符组成。例如,空格和点是有效的文件名字符,但禁止仅由这些字符组成的名称。Windows 不区分大小写字符,因此如果名为
a
A
的文件夹。更糟糕的是,看似允许的名称,如PRN
和CON
以及许多其他名称,都被保留且不允许使用。 Windows 也有几个长度限制;如果移动到另一个文件夹,一个文件夹中有效的文件名可能会变得无效。 命名文件和文件夹 的规则在 Microsoft 文档中。通常,您不能使用用户生成的文本来创建 Windows 目录名称。如果您想允许用户命名他们想要的任何名称,您必须创建安全名称,例如
A
、AB
、A2
等,存储用户生成应用程序数据文件中的名称及其等效路径,并在应用程序中执行路径映射。如果您绝对必须允许用户生成的文件夹名称,那么判断它们是否无效的唯一方法是捕获异常并假定名称无效。即使这样也充满危险,因为拒绝访问、脱机驱动器和驱动器空间不足引发的异常与可能因无效名称引发的异常重叠。你正在打开一个巨大的伤害罐头。