Java では、JAR ファイル内にパッケージ化されたリソースにアクセスするのは困難な場合があります。リソース コンテンツのストリーミングは簡単ですが、アクセス可能なファイル パスの取得は困難な場合があります。
1 つのアプローチは、getResource メソッドを使用して File オブジェクトを作成しようとします。
ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("config/netclient.p").getFile());
ただし、これは多くの場合失敗します。リソースのファイル システム上に対応するファイルがない可能性があるため、FileNotFoundException が発生します。
リソースについてコンセプト
JAR ファイルは、アーカイブ内のリソースをバンドルします。これは、物理ファイルとして直接アクセスできない場合があります。クラスローダーはリソースの読み込みを処理し、ストリーム経由でアクセスを提供できます。
代替: リソース コンテンツのストリーミング
ファイル パスなしでリソース コンテンツにアクセスするには、次を使用します:
ClassLoader classLoader = getClass().getClassLoader(); PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));
一時ファイルオプション
File オブジェクトが不可欠な場合は、ストリームを一時ファイルにコピーすることを検討してください。
InputStream resourceStream = classLoader.getResourceAsStream("config/netclient.p"); File tempFile = File.createTempFile("resource", ".tmp"); try (OutputStream outputStream = new FileOutputStream(tempFile)) { resourceStream.transferTo(outputStream); }
コピーしたら、必要に応じて一時ファイルを操作できます。
以上がJava JAR ファイル内のリソース パスにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。