Java を使用してアーカイブ内のファイルのファイルまたは URI オブジェクトを取得することは可能ですか? (zip または jar アーカイブ)
ありがとうヘメロク。
jar:
プロトコルは、JAR アーカイブ内のリソースへの URI を構築する方法です。
jar:http://www.example.com/bar/baz.jar!/path/to/file
JarURLConnection の API ドキュメントを参照してください: http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html
jar:
との間には!/
、URL を含む任意の URL を指定できfile:
ます。
public List<File> getFilesInJar(String jarName){
List<File> result = new ArrayList<File>();
File jarFile = new File(jarName);
JarInputStream jarFile = new JarInputStream(new FileInputStream(jarFile));
JarEntry jarEntry;
while ((jarEntry = jarFile.getNextJarEntry()) != null) {
result.add(inputStreamToFile(jarFile.getInputStream(jarEntry)));
}
return result;
}
inputStreamToFileメソッドの場合、google "java inputStream to file"ですが、Fileオブジェクトの代わりにInputStreamオブジェクトでも満足できるかもしれません:)
実際のファイル データについては、ZipFile#getInputStream(ZipEntry)を参照してください。そのクラスの javadoc では、その使用方法が説明されています。