ホームページ > Java > &#&チュートリアル > JavaでファイルをInputStreamとしてロードする最良の方法は何ですか?

JavaでファイルをInputStreamとしてロードする最良の方法は何ですか?

DDD
リリース: 2024-12-20 16:01:18
オリジナル
393 人が閲覧しました

What's the Best Way to Load a File as an InputStream in Java?

InputStream としてファイルをロードするさまざまな方法

概要:

Java は複数の方法を提供しますファイルをInputStreamとしてロードするメソッド。この記事では、次のアプローチの違いについて説明します。

  • InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName)
  • InputStream is = Thread.currentThread() .getContextClassLoader().getResourceAsStream(fileName)
  • InputStream は = this.getClass().getResourceAsStream(fileName)

fileName パラメータの解釈:

各メソッドは、fileName パラメータを異なる方法で解釈します。 ClassLoader.getResourceAsStream() はすべてのパスを絶対パスとして扱いますが、Class.getResourceAsStream() はそれらのパスを呼び出しクラスのパッケージに対して相対的なものと見なします。

適切な使用例:

1. Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName)

の使用 このメソッドは、アプリケーションのクラスパスの一部であり、呼び出し元と同じ JAR または EAR 内にパッケージ化されたファイルをロードする場合に推奨されます。クラス。これにより、クラスまたはパッケージの場所に関係なく、クラスパス リソースへのアクセスが提供されます。

2. this.getClass().getResourceAsStream(fileName)

の使用 このメソッドは、呼び出しクラスと同じパッケージにあるファイルをロードするのに適しています。これは、ファイルが JAR 内にパッケージ化されており、クラスパス経由でアクセスできる場合に特に便利です。

3. this.getClass().getClassLoader().getResourceAsStream(fileName)

の使用 このメソッドは Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName) に似ていますが、あまり一般的ではありません。また、アプリケーションのクラスパスからファイルをロードしますが、その動作はクラスローダーの実装によって異なる場合があります。

Tomcat 7 ユーザーへの警告:

Tomcat 7 以前では、ClassLoader.getResourceAsStream() および Class.getResourceAsStream() は、スラッシュ (/) を含むリソース名を一貫して処理できない可能性があります。 Javadoc によって指定されます。これらの方法を使用するときは、常に正規化が正しいことを確認してください。

以上がJavaでファイルをInputStreamとしてロードする最良の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート