JAR的全稱是Java Archive. JAR文件本質上是一個包含了META-INF的ZIP文件。
在META-INF目錄下,常見的有MANIFEST.MF、INDEX.LIST(用於索引)、*.sf、*.dsa、*.rsa和sig-*(用於簽名)。
J2SE提供瞭解析和生成JAR文件的包:java.util.jar;
在java.util.jar包中,有幾個核心的類:JarEntry、JarFile;
JarFile擴展自java.util.zip.ZipFile; JarEntry擴展自java.util.zip.ZipEntry;由此可見JAR和ZIP的關係。
首先,用File建立到一個JAR文件的連接,用這個File構建JarFile;然後,從JarFile中獲取枚舉,枚舉中的每一項都是JarEntry;JarEntry的名稱是典型的java包的名稱,例如com.huayu.system.HuayuNative.class文件,它的JarEntry的名稱就是com/huayu/system/HuayuNative.class。
因此,在獲取JarEntry後,創建目錄和文件時,要做一個轉換。此外,獲取JarEntry的輸入流可以從JarFile.getInputStream獲取。
代碼如下:
createPath方法用於測試創建目錄和文件的方法,結果證明這個方法是不可行的,必須要一級一級地建立目錄和文件,代碼見createPackageFile方法。