来自相对路径的InputStream

All*_*ang 38 java io inputstream path relative-path

我有一个相对文件路径(例如"/res/example.xls"),我想从该路径获取该文件的InputStream对象.

我检查了JavaDoc并没有找到一个构造函数或方法来从路径获取这样的InputStream /

任何人有任何想法?请告诉我!

谢谢

Tom*_*icz 60

用途FileInputStream:

InputStream is = new FileInputStream("/res/example.xls");
Run Code Online (Sandbox Code Playgroud)

但是从来没有从原始文件输入流中读取,因为这非常慢.首先用缓冲装饰器包裹它:

new BufferedInputStream(is);
Run Code Online (Sandbox Code Playgroud)

BTW前导斜线意味着路径是绝对的,而不是相对的.


Sha*_*mil 40

InputStream inputStream = Files.newInputStream(Path);
Run Code Online (Sandbox Code Playgroud)

  • 考虑使用缓冲版本以获得更高的效率:[链接](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#newBufferedReader( java.nio.file.Path)) (2认同)

小智 5

初始化变量,例如:Path filePath,然后:

FileInputStream fileStream;
try {
    fileStream = new FileInputStream(filePath.toFile());
} catch (Exception e) {
    throw new RuntimeException(e);
}
Run Code Online (Sandbox Code Playgroud)

完成!使用Path,您可以访问许多有用的方法。