是否有Java实用程序可以将字符串路径转换为使用正确的文件分隔符char?

2022-09-01 12:29:11

我开发了许多在Java中操作文件的类。我正在开发一个Linux盒子,并且一直在幸福地打字。当需要提交时,我意识到该项目的其他一些开发人员正在使用Windows。我现在想调用一个方法,该方法可以采用该形式的字符串,并根据操作系统返回正确分隔的路径。new File("path/to/some/file");"/path/to/some/file"

例如:
在 Windows 上变为。
在Linux上,它只返回给定的字符串。"path/to/some/file""path\\to\\some\\file"

我意识到用不了多久就可以找到一个可以做到这一点的正则表达式,但我不打算重新发明轮子,而是更喜欢一个经过适当测试的解决方案。如果它内置于JDK中会很好,但如果它是一些小型F / OSS库的一部分,那也很好。

那么有没有一个Java实用程序可以将字符串路径转换为使用正确的文件分隔符char?


答案 1

Apache Commons(再次)来救援。方法 FilenameUtils.separatorsToSystem(String path) 将执行所需的操作。Commons IO

毋庸置疑,除了会做更多的事情,值得一看。Apache Commons IO


答案 2

A实际上Windows Vista和XP下工作。"/path/to/some/file"

new java.io.File("/path/to/some/file").getAbsoluteFile()

> C:\path\to\some\file

但它仍然不是可移植的,因为Windows有多个。因此,必须以某种方式选择根目录。相对路径应该没有问题。

编辑:

Apache commons io对unix和Windows以外的env没有帮助。Apache io 源代码

public static String separatorsToSystem(String path) { 
    if (path == null) {
     return null;
    }
    if (isSystemWindows()) {
      return separatorsToWindows(path);
    } else {
      return separatorsToUnix(path);
    }
}