Java JAR ファイル内のリソース パスへのアクセス
Java JAR ファイル内に格納されているリソースを操作する場合、リソースへのパスを取得することができます。挑戦的。ファイル システムに保存されている通常のファイルとは異なり、JAR 内のリソースには、必ずしも直接対応するファイルがあるとは限りません。
提供されているコード スニペットは、この問題を示しています。
ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("config/netclient.p").getFile());
このコードの結果は、リソースがファイル システム上の物理ファイルとしてアクセスできないため、FileNotFoundException が発生します。 JAR ファイルが個別のファイルに展開されていない可能性があり、クラスローダー自体がリソースへのファイル ハンドルを提供していない可能性があります。
代替ソリューション
コンテンツを取得するにはJAR ファイル内のリソースを削除するには、別のアプローチを使用することもできます。 classLoader.getResourceAsStream():
ClassLoader classLoader = getClass().getClassLoader(); PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));
このコードは、ファイル パスへのアクセスを必要とせず、リソースの内容を直接読み取り、出力します。リソースにファイルとしてアクセスすることがどうしても必要な場合は、ストリームを一時ファイルにコピーできます:
File tempFile = File.createTempFile("temp", null); try ( InputStream inputStream = classLoader.getResourceAsStream("config/netclient.p"); OutputStream outputStream = new FileOutputStream(tempFile); ) { IOUtils.copy(inputStream, outputStream); }
以上がJava JAR ファイル内のリソースにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。