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一个适合您的需求。