【问题标题】:Path separator for Windows and UnixWindows 和 Unix 的路径分隔符
【发布时间】:2010-02-09 09:21:49
【问题描述】:

是否有任何特殊字符不能成为 Windows 或 Unix 中路径的一部分,我可以将其用作分隔符?

【问题讨论】:

  • 请注意,这个问题似乎是关于 delimiters 而不是 separators

标签: filepath


【解决方案1】:

PATH 环境变量的分隔符呢? ; 适用于 windows,: 适用于 linux。

【讨论】:

  • 您赢得了名为“成为唯一回答所提问题的人”的奖项
  • 在 Linux 上文件名可以包含 :
【解决方案2】:

路径分隔符取决于平台:

对于 Windows,它是“\”,对于 unix,它是“/”。

【讨论】:

  • 您说的是目录分隔符,而不是路径分隔符。路径分隔符是用于分隔表示多个路径的值的各个元素的字符(Windows 上的分号,Unix 上的冒号)。
  • “目录分隔符”也被广泛称为路径分隔符,有点令人困惑。在这种情况下,我很确定 OP 是在谈论文件路径,而不是 PATH。
  • 另外值得指出的是,/ 在 Windows 上运行良好,除非应用程序竭尽全力阻止它运行。
【解决方案3】:

维基百科有用地列出了the reserved characters for different filesystems。 NTFS 和 POSIX 都不接受文件名中的空字符或斜杠 (/) 字符。斜杠字符显然不是一个好的分隔符,因为它在 POSIX 路径中很常见,所以也许你可以使用 null。

当然 null 并不适用于所有情况(例如,打印时通常不可见),在这种情况下,您可能必须使用某种 escaping scheme

旨在跨不同平台工作的 Java 甚至不尝试找到通用的路径分隔符。相反,每个平台都有自己的特点,可通过API 访问。

【讨论】:

    【解决方案4】:

    在java中你可以使用:

    WindowsNTFileSystem
    s.split(File.pathSeparator) for windows it will give ; (semicolon)
    s.split(File.separator) for windows it will give \ (backward)
    
    Linux
    s.split(File.pathSeparator) for windows it will give : (colon)
    s.split(File.separator) for windows it will give / (forward)
    

    【讨论】:

      【解决方案5】:

      从技术上讲,Unix 确实允许文件夹/文件名中的任何字符,当然 / 除外,这将被解释为路径的一部分。 Windows 只支持可打印字符和一些特殊字符,\ / : * ? " < > | 除外。

      【讨论】:

      • 那么,对于 Unix,有没有办法在一个字符串中连接多个路径?
      • @user269354 - 也许你可以使用自制的分隔符,例如:/home/user/tiutalk/_____SEPARATOOOOORRR_____/var/www/_____SEPARATOOOOORRR_____/bin/dump/
      • 或类似“#p#p...#p#p”的字符串,其中#是路径中的字符数,p是路径
      • @user269354:正如 TiuTalk 建议的那样,有可能只使用不属于路径的一部分并且您可以轻松识别和提取的模式。如果您可以确定这些路径中永远不会有数字,那么可以,使用那个。
      • @user269354,Unix 使用 :(冒号)来分隔路径,但由于 Windows 在根目录名称(如 C://)中有 :,它使用 ;(分号)来分隔路径
      【解决方案6】:

      我会小心使用自定义分隔符,因为它们将来可能会损坏,例如如果有人使用 unicode 并且您的自定义分隔符是另一个字符的一部分。

      【讨论】:

      • 请注意,这将主要关注在基本 ASCII 127 之外定义的字符,除非涉及 非常 有缺陷的字符集实现。
      猜你喜欢
      • 2012-02-11
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2017-10-30
      • 2014-07-29
      • 1970-01-01
      相关资源
      最近更新 更多