获取指定文件路径的file.separator

Get file.separator of a specified file path

如何获取指定file/folder路径的文件分隔符?

在Java中,我们可以这样写,比如

File f = new File("C:\MyFolder\MyText.txt");

请记住,这是一个文件表示(该文件不一定实际存在)。那么给定任何指定的路径,是否有一种方法可以 return 仅用于该指定路径的分隔符?

来自docs

File.pathSeparatorFile.pathSeparatorChar returns 系统相关的文件分隔符,但我想要的是给定路径的分隔符,如上例 \ , 即使上面的程序是 运行 并且路径对 *nix

无效

我会从 System.getProperty("user.home") 开始。而且,你可以像

这样使用 File.seperator
File f = new File(System.getProperty("user.home") + 
        File.seperator + "MyText.txt");

但我更喜欢File(String parent, String child)喜欢

File f = new File(System.getProperty("user.home"), "MyText.txt");
System.out.println(f.getPath());

File 对象的分隔符始终由 File.separator(或 File.separatorChar)给出。没有办法用不寻常的分隔符构造 File 对象;它们始终包含在当前系统上有效的路径。

File f = new File("C:\MyFolder\MyText.txt");

在 Windows 上执行此行后,f 引用一个 File 对象,该对象引用驱动器上文件夹 MyFolder 中的文件 MyText.txt C:,如您所愿。

但是在 Linux 上,f 引用一个 File 对象,该对象引用当前目录中的文件 C:\MyFolder\MyText.txt。 (在 Linux 上,文件名中允许使用反斜杠)

想象一下,如果有办法做到这一点。如果你有一个用 new File("a/b\c") 构造的文件,那么你怎么知道它是指文件夹 a 中的文件 b\c(带分隔符 /),还是文件夹 a/b 中的文件 c(带分隔符 \)?

它不能,所以应该清楚没有可靠的方法可以做到这一点。如果您的程序处理带有不寻常分隔符的路径,那么您的程序需要自己处理它们。 File 无法为您完成。