File.separator与FileSystem.getSeparator()与System.getProperty(“file.separator”)?

似乎有三种相同的方式独立获取平台相关的“文件分隔符”平台:

  • java.io.File.separator

  • java.nio.file.FileSystems.getDefault().getSeparator();

  • System.getProperty("file.separator")

我们如何决定何时使用哪个?

他们之间还有什么区别?

System.getProperties()可以通过调用System.setProperty(String key, String value)或命令行参数-Dfile.separator=/

File.separator获取默认文件系统的分隔符。

FileSystems.getDefault()让你成为默认的文件系统。

FileSystem.getSeparator()您提供文件系统的分隔符。 请注意,作为一个实例方法,如果需要代码在一个JVM中的多个文件系统上运行,可以使用它来将不同的文件系统传递到默认的代码中。

如果你的代码不跨越文件系统的边界,也就是说你只使用一个文件系统,那么就使用java.io.File.separator

正如所解释的,这将使你成为你的FS的默认分隔符。 正如Bringer128所解释的, System.getProperty("file.separator")可以通过命令行选项覆盖,而不像java.io.File.separator那样安全。

最后一个, java.nio.file.FileSystems.getDefault().getSeparator(); 是在Java 7中引入的,所以如果您希望您的代码可以在较旧的Java版本上移植,那么您现在可以忽略它。

所以,这些选项中的每一个都与其他选项几乎相同,但并不完全相同。 select一个适合您的需求。

    Interesting Posts