Gru*_*eck 22 java string file-io cross-platform jdk1.6
我开发了许多用Java操作文件的类.我正在使用Linux机器,并且一直在幸福地打字new File("path/to/some/file");
.当提交时,我意识到该项目的其他一些开发人员正在使用Windows.我现在想调用一个方法,该方法可以接受表单的字符串,"/path/to/some/file"
并根据操作系统返回正确分隔的路径.
例如:
"path/to/some/file"
成为"path\\to\\some\\file"
Windows.
在Linux上它只返回给定的String.
我意识到不会花很长时间来敲定一个可以做到这一点的正则表达式,但我不打算重新发明轮子,并且更喜欢经过适当测试的解决方案.如果它是内置于JDK中会很好,但如果它是一些小型F/OSS库的一部分也很好.
那么是否有一个Java实用程序将转换String路径以使用正确的文件分隔符char?
Bri*_*new 38
Apache Commons
来救援(再次).该Commons IO
方法FilenameUtils.separatorsToSystem(String path)
将做你想要的.
不用说,Apache Commons IO
除此之外还会做更多,值得一看.
Tho*_*ung 16
一个"/path/to/some/file"
实际工作在Windows Vista和XP.
new java.io.File("/path/to/some/file").getAbsoluteFile()
> C:\path\to\some\file
Run Code Online (Sandbox Code Playgroud)
但它仍然不可移植,因为Windows有多个根源.因此必须以某种方式选择根目录.相对路径应该没有问题.
编辑:
除了unix和windows之外,Apache commons io对envs 没有帮助.Apache io源代码:
public static String separatorsToSystem(String path) {
if (path == null) {
return null;
}
if (isSystemWindows()) {
return separatorsToWindows(path);
} else {
return separatorsToUnix(path);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是Apache commons-io所做的,展开了几行代码:
String separatorsToSystem(String res) {
if (res==null) return null;
if (File.separatorChar=='\\') {
// From Windows to Linux/Mac
return res.replace('/', File.separatorChar);
} else {
// From Linux/Mac to Windows
return res.replace('\\', File.separatorChar);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您想避免额外的依赖,请使用它.
归档时间: |
|
查看次数: |
51387 次 |
最近记录: |