Jar内のファイルへのアクセス方法

JavaプログラムからJar内のファイルへアクセスする方法はいくつかある。
オブジェクト自身がJar内のクラスのファイルのオブジェクトである場合に簡単なのは、自分のオブジェクトのClassLoaderを取得し、そのgetResourceやgetResourceAsStreamメソッドなどを使用して、InputStreamオブジェクトを取得する方法である。


getResourceAsStreamメソッドを使用する方法

例)
Jarファイル内のファイルを読むためのBufferedReaderを取得する。

public BufferedReader getJarReader(String path){
    BufferedReader reader = null;
    InputStream stream = this.getClass().getClassLoader().getResourceAsStream(path);
    if(stream!=null){
        reader = new BufferedReader(new InputStreamReader(stream));
    }
    return reader;
}

Jarファイル内の構成が、次のようになっているとき、

META-INF/MANIFEST.MF
A.class
data/data.txt

クラスA内で次のようにメソッド呼び出しすれば、BufferedReaderオブジェクトを取得できる。

BufferedReader reader = getJarReader("data/data.txt");
String line = reader.readLine();



関連リンク