windows - Windows 和 Linux 目录名称中禁止使用哪些字符?

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

我还缺少什么?

不过,我需要一份综合指南,并且需要考虑到 双字节字符。链接到外部资源对我来说很好。

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

最佳答案

  1. 禁止的可打印 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)
      
  2. 不可打印的字符

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

    • 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 .

  3. 保留文件名

    保留以下文件名:

    • 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)。

  4. 其他规则

    • window :

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

    • macOS:

      您没有要求它,但以防万一:不允许冒号 : 和正斜杠 / 取决于上下文(例如,Finder 支持斜杠,终端支持冒号)。 (More details)

https://stackoverflow.com/questions/1976007/

相关文章:

python - 在 Python 中,如何将 `datetime` 对象转换为秒?

linux - 如何在 Vimdiff 中展开/折叠差异部分?

python - 有没有办法在 Python 中使用 PhantomJS?

linux - 在 Linux 中更改默认 shell

linux - 在 Linux 中自动重复命令

python - 如何格式化小数以始终显示 2 个小数位?

python - 如何从多维数组中提取一列?

linux - 查找一个目录中存在但另一个目录中不存在的文件

python - 转义正则表达式字符串

linux - Linux 中是否有任何标准的退出状态代码?