Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java6中java.nio.file.Path的替代方案,以实现操作系统文件系统的灵活性_Java_Io_Operating System - Fatal编程技术网

Java6中java.nio.file.Path的替代方案,以实现操作系统文件系统的灵活性

Java6中java.nio.file.Path的替代方案,以实现操作系统文件系统的灵活性,java,io,operating-system,Java,Io,Operating System,我正在将一个代码向后移植到JavaSE6,我希望为我的代码提供一个与操作系统无关的文件检索。我已经在SE7上有了一个非常有效的代码 这就是我在JavaSE7上使用它的方式 protected Properties getPropertiesFromFileSystemPath(final String filename) throws IOException { if (filename != null) { Path p = FileSystem

我正在将一个代码向后移植到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.txt
foo/bar/file.txt


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

如果您正在接收单个文件,那么使用这个Path concat函数是一种过分的做法

您只需使用
新文件输入流(文件名)
。它将在
/
\
上正常工作,即使您将它们混在一起

关闭打开的输入流非常重要。在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();
}

除非你不需要做
如果(is!=null)
,因为
is
在那一点上不能为null。感谢@Boschi提供的关闭提示。我发现,至少在Java 6中,当在windows
file.txt
中访问同一目录下的文件时,我会使用unix文件路径方式来处理文件。