web-dev-qa-db-ja.com

相対パスからの入力ストリーム

相対ファイルパス(たとえば、「/ res/example.xls」)があり、そのパスからそのファイルのInputStreamオブジェクトを取得したい。

JavaDocをチェックしましたが、パス/からこのようなInputStreamを取得するコンストラクターまたはメソッドが見つかりませんでした

誰もが考えていますか?私にお知らせください!

ありがとうございました

36
Allan Jiang

FileInputStream を使用します。

InputStream is = new FileInputStream("/res/example.xls");

しかし、これはひどく遅いので、生のファイル入力ストリームから決して読み取らないでください。最初にバッファリングデコレータでラップします。

new BufferedInputStream(is);

BTWの先頭のスラッシュは、パスが相対ではなくabsoluteであることを意味します。

56
InputStream inputStream = Files.newInputStream(Path);
38
Shakirov Ramil

次のような変数を初期化します:Path filePath、 その後:

FileInputStream fileStream;
try {
    fileStream = new FileInputStream(filePath.toFile());
} catch (Exception e) {
    throw new RuntimeException(e);
}

できた! Pathを使用すると、多くの便利なメソッドにアクセスできます。

4

new FileInputStream("your_relative_path")は、現在の作業ディレクトリに相対的です。

2
michael667