一尘不染

Windows和Linux目录名称中禁止使用什么字符?

linux

我知道/在Linux中是非法的,以下是Windows中的非法(我认为) * . " / \ [ ] : ; |
,

我还想念什么?

但是,我需要一份全面的指南,其中要考虑到双字节字符。链接到外部资源对我来说很好。

我首先需要使用可能包含禁止字符的名称在文件系统上创建目录,因此我计划将这些字符替换为下划线。然后,我需要将此目录及其内容写入zip文件(使用Java),因此,有关zip目录名称的任何其他建议将不胜感激。


阅读 653

收藏
2020-06-02

共1个答案

一尘不染

禁止使用文件名字符的“综合指南”在Windows上不起作用,因为它保留了文件名和字符。是的,* " ?禁止像和这样的字符
,但是有无限多个名称仅由被禁止的有效字符组成。例如,空格和点是有效的文件名字符,但禁止仅由那些字符组成的名称。

Windows不会区分大小写字符,因此,A如果a已经存在一个命名的文件夹,则无法创建一个命名的文件夹。更糟的,似乎允许的名称,如PRNCON,以及许多其他名称,是保留的,不允许使用。Windows也有几个长度限制;如果将文件名移动到另一个文件夹,则在一个文件夹中有效的文件名可能变得无效。命名文件和文件夹的规则 在Microsoft文档中。

通常,您不能使用用户生成的文本来创建Windows目录名称。如果你想允许用户他们想要什么名字,你必须创建安全的名字,如AABA2等,存储用户生成的名称和应用程序数据文件的路径等价物,并在你的应用程序中执行路径映射。

如果绝对必须允许用户生成的文件夹名称,则判断它们是否无效的唯一方法是捕获异常并假定名称无效。即使这样也充满了危险,因为拒绝访问,脱机驱动器和驱动器空间不足引发的异常与可以为无效名称引发的异常重叠。您正在打开一罐巨大的伤害。

2020-06-02