【发布时间】:2010-02-09 09:21:49
【问题描述】:
是否有任何特殊字符不能成为 Windows 或 Unix 中路径的一部分,我可以将其用作分隔符?
【问题讨论】:
-
请注意,这个问题似乎是关于 delimiters 而不是 separators。
标签: filepath
是否有任何特殊字符不能成为 Windows 或 Unix 中路径的一部分,我可以将其用作分隔符?
【问题讨论】:
标签: filepath
PATH 环境变量的分隔符呢? ; 适用于 windows,: 适用于 linux。
【讨论】:
:。
路径分隔符取决于平台:
对于 Windows,它是“\”,对于 unix,它是“/”。
【讨论】:
/ 在 Windows 上运行良好,除非应用程序竭尽全力阻止它运行。
维基百科有用地列出了the reserved characters for different filesystems。 NTFS 和 POSIX 都不接受文件名中的空字符或斜杠 (/) 字符。斜杠字符显然不是一个好的分隔符,因为它在 POSIX 路径中很常见,所以也许你可以使用 null。
当然 null 并不适用于所有情况(例如,打印时通常不可见),在这种情况下,您可能必须使用某种 escaping scheme。
旨在跨不同平台工作的 Java 甚至不尝试找到通用的路径分隔符。相反,每个平台都有自己的特点,可通过API 访问。
【讨论】:
在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)
【讨论】:
从技术上讲,Unix 确实允许文件夹/文件名中的任何字符,当然 / 除外,这将被解释为路径的一部分。
Windows 只支持可打印字符和一些特殊字符,\ / : * ? " < > | 除外。
【讨论】:
:(冒号)来分隔路径,但由于 Windows 在根目录名称(如 C://)中有 :,它使用 ;(分号)来分隔路径
我会小心使用自定义分隔符,因为它们将来可能会损坏,例如如果有人使用 unicode 并且您的自定义分隔符是另一个字符的一部分。
【讨论】: