似乎有三种相同的方法可以独立于平台获得依赖于平台的“文件分隔符”:
我们如何决定何时使用哪个?
他们之间有什么区别吗?
似乎有三种相同的方法可以独立于平台获得依赖于平台的“文件分隔符”:
我们如何决定何时使用哪个?
他们之间有什么区别吗?
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 版本移植,那么您现在不妨忽略它。
因此,这些选项中的每一个都与其他选项几乎相同,但并不完全相同。选择一个适合您的需求。