うまくいけば、誰かがこれで私を助けてくれます。
ClassLoader を使用することが、コンテンツをロードする最も信頼できる方法であると理解しています。
public class Pipeline{
public static URL getResource(String filename) {
return ClassLoader.getSystemResource(filename);
}
public static InputStream getResourceAsStream(String filename) {
return ClassLoader.getSystemResourceAsStream(filename);
}
}
「[jar bundle]/resources/abc.png」にファイルがある場合、次のようにロードします。
URL url = Pipeline.getResource("resources/abc.png");
ロードは簡単です。
貯蓄は私を得るものです。
実行中にデータを収集し、終了時にそのデータを保存し、次回にデータをロードして追加し続けるプログラムがあります。
私が考える最も簡単な解決策は、ClassLoaderがそれらを取得できるようにjarバンドルに保存することです。これは可能ですか?それともおすすめ?
リソースを取得して保存するために「ファイル」に頼る必要がない限り、リソースをjarの外に置いてもかまいません。(綺麗に出来ない限り)
folder/application.jar
folder/resources/abc.png
../ ClassLoader が探している場所から 1 つ戻ることができれば、実際に jar ファイルを含むディレクトリからデータをきれいに取得するのは簡単です。
Pipeline.getResource("../resources/abc.png");
何か案は?