似乎有三种相同的方法可以独立地获得与平台相关的“文件分隔符”平台:
我们如何决定何时使用哪个?
它们之间是否有任何区别?
答案 0 :(得分:127)
System.getProperties()
或使用命令行参数System.setProperty(String key, String value)
可以覆盖 -Dfile.separator=/
File.separator
获取默认文件系统的分隔符。
FileSystems.getDefault()
为您提供默认文件系统。
FileSystem.getSeparator()
获取文件系统的分隔符。请注意,作为一种实例方法,您可以使用此方法将不同的文件系统传递给除默认值之外的代码,前提是您需要代码在一个JVM中的多个文件系统上运行。
答案 1 :(得分:26)
如果您的代码没有跨越文件系统边界,即您只使用一个文件系统,那么请使用java.io.File.separator
。
如上所述,这将使您获得FS的默认分隔符。正如Bringer128所解释的那样,System.getProperty("file.separator")
可以通过命令行选项覆盖,并且不像java.io.File.separator
那样安全。
最后一个,java.nio.file.FileSystems.getDefault().getSeparator();
是在Java 7中引入的,所以如果您希望代码可以在旧的Java版本中移植,那么您现在也可以忽略它。
因此,这些选项中的每一个都与其他选项几乎相同,但并不完全相同。选择一个适合您需求的产品。