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();