有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

io是java的替代品。尼奥。文件Java6中的路径实现了操作系统文件系统的灵活性

我正在将一个代码向后移植到JavaSE6,我希望为我的代码提供一个操作系统无关的文件检索。我已经在SE7上有了一个非常有效的代码

这就是我在JavaSE7上使用它的方式

      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,并将被找到

有没有像在JavaSE6中使用java.nio.file.Path一样简单的替代方法


共 (1) 个答案

  1. # 1 楼答案

    如果你收到的是一个文件,那么使用这个Path concat函数就太过分了

    你可以简单地使用new FileInputStream(filename)。它在/\上都能正常工作,即使你把它们弄混了

    关闭打开的输入流非常重要。在java7中,可以使用自动关闭功能:

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