我正在向Java SE6移植代码,我希望为我的代码提供与操作系统无关的文件检索。我已经在SE7上有一个很好的代码。
这就是我在Java SE7上使用它的方式。
protected Properties getPropertiesFromFileSystemPath(final String filename) throws IOException {
if (filename != null) {
Path p = FileSystems.getDefault().getPath("");
final InputStream inputStream = new FileInputStream(p.resolve(filename).toFile());
return getProperties(inputStream);
} else {
throw new IOException();
}
}
使用此代码,我可以指向文件foo\bar\file.txt
或foo/bar/file.txt
并找到。
是否有一种替代方法就像在Java SE6中使用java.nio.file.Path
一样简单?
答案 0 :(得分:1)
如果您正在接收单个文件,则使用此路径连接功能是一种过度杀伤。
您只需使用new FileInputStream(filename)
即可。它可以在/
和\
上正常工作,即使您混淆了它们。
关闭打开的输入流非常重要。在java7中,您可以使用autocloseable函数:
try (InputStream is = new FileInputStream(filename)) {
return getProperties(is);
}
在Java6中,您需要自己关闭它:
InputStream is = new FileInputStream(filename);
try {
return getProperties(is);
} finally {
if (is != null) is.close();
}