获得依赖于平台的“文件分隔符”平台似乎有三种相同的方法--独立的:
java.io.File.separatorjava.nio.file.FileSystems.getDefault().getSeparator();System.getProperty("file.separator")我们如何决定何时使用哪一种?
他们之间有什么区别吗?
发布于 2011-11-10 05:46:59
System.getProperties()可以被对System.setProperty(String key, String value)的调用或命令行参数-Dfile.separator=/覆盖。
File.separator获取默认文件系统的分隔符。
FileSystems.getDefault()为您提供默认的文件系统。
FileSystem.getSeparator()为您获取文件系统的分隔符。请注意,作为一个实例方法,您可以使用它将不同的文件系统传递给默认代码以外的代码,如果您需要代码在一个JVM中的多个文件系统上操作的话。
发布于 2011-11-10 05:51:00
如果您的代码没有跨越文件系统边界,即您只是在处理一个文件系统,那么使用java.io.File.separator。
如前所述,这将为FS获取默认分隔符。正如Bringer128所解释的那样,System.getProperty("file.separator")可以通过命令行选项被覆盖,并且不像java.io.File.separator那样安全。
最后一个版本是在Java 7中引入的java.nio.file.FileSystems.getDefault().getSeparator();,所以如果您希望代码能够跨旧版本移植,那么最好暂时忽略它。
因此,这些选项中的每一个几乎都与其他选项相同,但并不完全相同。选择一个适合你需要的。
https://stackoverflow.com/questions/8075373
复制相似问题