Java6 for OS文件系统灵活性中java.nio.file.Path的替代方法

时间:2017-04-06 12:49:45

标签: java io operating-system

我正在向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.txtfoo/bar/file.txt并找到。

是否有一种替代方法就像在Java SE6中使用java.nio.file.Path一样简单?

1 个答案:

答案 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();
}