Windows和Linux目录名中禁止哪些字符?

我知道/在Linux中是非法的,以下内容在Windows中是非法的
(我想)*&quot/[]|

我还缺什么

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

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

让我们保持简单,首先回答问题

  1. 禁止打印的ASCII字符为:

    • Linux/Unix:

      /(正斜杠)
      
    • 窗口:

      <(少于)
      &燃气轮机;(大于)
      :(冒号-有时有效,但实际上是NTFS备用数据流)
      &引用;(双引号)
      /(正斜杠)
      \(反斜杠)
      |(垂直杆或管道)
      ? (问号)
      *(星号)
      
  2. 不可打印字符

    如果您的数据来自允许使用不可打印字符的源,那么还有更多需要检查的内容

    • Linux/Unix:

      0(空字节)
      
    • 窗口:

      0-31(ASCII控制字符)
      

    注意:虽然在Linux/Unix文件系统下创建文件名中包含控制字符是合法的,但用户处理此类文件可能是一场噩梦。

  3. 保留文件名

    保留以下文件名:

    • 窗口:

      CON、PRN、AUX、NUL
      COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9
      LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9
      

      (单独使用或使用任意文件扩展名,例如,LPT1.txt

  4. 其他规则

    • 窗口:

      文件名不能以空格或点结尾

    • 马科斯:

      您没有要求它,只是以防万一:根据上下文,不允许使用冒号和正斜杠/(例如,Finder支持斜杠,terminal支持冒号)。详情请参阅https://superuser.com/questions/326103/what-are-invalid-characters-for-a-file-name-under-os-x

发表评论