InputStream としてファイルをロードするさまざまな方法
概要:
Java は複数の方法を提供しますファイルをInputStreamとしてロードするメソッド。この記事では、次のアプローチの違いについて説明します。
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 サイトの他の関連記事を参照してください。