ホームページ > Java > &#&チュートリアル > JavaでファイルをInputStreamとしてロードするための適切な方法を選択するにはどうすればよいですか?

JavaでファイルをInputStreamとしてロードするための適切な方法を選択するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-16 16:57:11
オリジナル
750 人が閲覧しました

How to Choose the Right Method for Loading Files as InputStreams in Java?

InputStream としてファイルをロードする: さまざまなアプローチとそれらを使用する場合

InputStream としてファイルをロードするには、いくつかの方法があります。それぞれ独自のニュアンスを持って使用できます。この記事では、一般的に使用される 3 つのアプローチの違いについて詳しく説明します。

  • Class.getResourceAsStream(fileName):

    このメソッドは、fileName をそれを呼び出すクラスのパッケージに対する相対パス。たとえば、String.class.getResourceAsStream("myfile.txt") は、「java/lang/myfile.txt」のクラスパス内でファイル「myfile.txt」を検索します。パスが「/」で始まる場合、絶対パスを示し、クラスパス ルートから検索を開始します。

  • ClassLoader.getResourceAsStream(fileName):

    Class.getResourceAsStream() とは異なり、このメソッドはすべてのパスを絶対パスとして扱います。 String.class.getClassLoader().getResourceAsStream("myfile.txt") と String.class.getClassLoader().getResourceAsStream("/myfile.txt") は両方とも、次のクラスパスでファイル "myfile.txt" を検索します。 "./myfile.txt."

  • Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName):

    このメソッドはリソースを処理する現在のスレッドに関連付けられたコンテキスト クラスローダーを使用するため、アプリケーション サーバーからクラスやファイルをロードする場合に適しています。

各メソッドを使用する場合:

ファイルとクラスが同じ jar に存在する特定のシナリオWebSphere 6.1 にデプロイされた EAR ファイルの場合は、Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName) を使用する必要があります。これは、アプリケーション サーバーのコンテキスト クラスローダーを考慮するためです。

Tomcat 7 以前のユーザーに対する警告:

ただし、Tomcat 7 またはそれを使用している場合は、次の注意点に注意してください。以前。上記の説明は概ね適切ですが、Tomcat のバージョン 6 と 7 では、findResource(String name) メソッドでのリソースの正規化の処理が異なるようです。その結果、これらのバージョンでは、classLoader.getResourceAsStream("/resource.txt") と classLoader.getResourceAsStream("resource.txt") が同じ結果を生成しない可能性があります。以前の Tomcat バージョンでこれらのメソッドを使用する場合は注意してください。

以上がJavaでファイルをInputStreamとしてロードするための適切な方法を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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