Java JARファイル内のリソースへのパスを取得する方法 質問する

Java JARファイル内のリソースへのパスを取得する方法 質問する

リソースへのパスを取得しようとしていますが、うまくいきませんでした。

これは(IDE でも JAR でも)機能しますが、この方法ではファイルへのパスは取得できず、ファイルの内容のみを取得できます。

ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));

こうすると:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());

結果は次のとおりです。java.io.FileNotFoundException: file:/path/to/jarfile/bot.jar!/config/netclient.p (No such file or directory)

リソース ファイルへのパスを取得する方法はありますか?

ベストアンサー1

これは意図的なものです。「ファイル」の内容は、ファイルとして使用できない場合があります。JAR ファイルまたはその他の種類のリソースの一部である可能性のあるクラスとリソースを扱っていることに注意してください。クラスローダーは、リソースへのファイル ハンドルを提供する必要はありません。たとえば、jar ファイルはファイル システム内の個々のファイルに展開されていない可能性があります。

java.io.File を取得して実行できることはすべて、java.io.File が絶対に必要な場合は、ストリームを一時ファイルにコピーして同じ操作を実行することで実行できます。

おすすめ記事