分离器 vs FileSystem.getMolecular ator() vs System.getProperty (“ file.analysis”) ?

一模一样似乎有三种独立获得平台相关的“文件分隔符”平台的方法:

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

他们之间有什么区别吗?

149401 次浏览

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

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

FileSystems.getDefault()为您提供默认的文件系统。

FileSystem.getSeparator()为文件系统提供分隔符。请注意,作为一个实例方法,您可以使用这种方法将不同的文件系统传递给您的代码,而不是默认的代码,以防您需要代码在一个 JVM 中操作多个文件系统。

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

正如解释的那样,这将为 FS 提供默认的分隔符。正如 Bringer 128所解释的,System.getProperty("file.separator")可以通过命令行选项重写,而且不像 java.io.File.separator那样是类型安全的。

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

因此,这些选项中的每一个都几乎与其他选项相同,但并不完全相同。选择一个适合你需要的。