0

この質問が何度か聞かれたことは知っていますが、私の問題は他の問題とは少し異なると思います:

String resourcePath = "/Path/To/Resource.jar";

File newFile = new File(resourcePath);
InputStream in1 = this.getClass().getResourceAsStream(resourcePath);
InputStream in2 = this.getClass().getClassLoader().getResourceAsStream(resourcePath);

File-Object newFile は問題ありません (.jar ファイルが見つかり、newFile.length() などのメタデータを取得できます)。

一方、InputStream は常に null を返します。getResourceAsStream()この名前でリソースが見つからない場合、javadoc は null であると言っていますが、ファイルはそこにあります。(明らかに、それは File-Object にあるため)

なぜこれが起こるのか、そしてInputStreamで.jarファイルを取得できるように修正する方法を知っている人はいますか?

4

1 に答える 1

1

このgetResourceAsStream()メソッドは、ファイル システムからファイルをロードしません。クラスパスからリソースをロードします。これを使用して、たとえば、JAR 内にパッケージ化されたプロパティ ファイルを読み込むことができます。これを使用して、ファイル システムからファイルをロードすることはできません。

そのため、ファイルが JAR ファイルではなくファイル システムにある場合は、このFileInputStreamクラスを使用することをお勧めします。

于 2013-04-05T09:41:02.557 に答える