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