|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 全部類別 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Objectjava.util.jar.Pack200
public abstract class Pack200
以 Pack200 格式在 JAR 檔案和打套件的串流之間進行轉換。請參閱以下網址的 Network Transfer Format JSR 200 Specification:http://jcp.org/aboutJava/communityprocess/review/jsr200/index.html。
通常,應用程序開發人員使用打包器引擎在網站上部署或宿主 JAR 檔案。部署應用程序則使用解包器引擎把位元組串流轉換回 JAR 格式。
import java.util.jar.Pack200; import java.util.jar.Pack200.*; ... // Create the Packer object Packer packer = Pack200.newPacker(); // Initialize the state by setting the desired properties Map p = packer.properties(); // take more time choosing codings for better compression p.put(Packer.EFFORT, "7"); // default is "5" // use largest-possible archive segments (>10% better compression). p.put(Packer.SEGMENT_LIMIT, "-1"); // reorder files for better compression. p.put(Packer.KEEP_FILE_ORDER, Packer.FALSE); // smear modification times to a single value. p.put(Packer.MODIFICATION_TIME, Packer.LATEST); // ignore all JAR deflation requests, // transmitting a single request to use "store" mode. p.put(Packer.DEFLATE_HINT, Packer.FALSE); // discard debug attributes p.put(Packer.CODE_ATTRIBUTE_PFX+"LineNumberTable", Packer.STRIP); // throw an error if an attribute is unrecognized p.put(Packer.UNKNOWN_ATTRIBUTE, Packer.ERROR); // pass one class file uncompressed: p.put(Packer.PASS_FILE_PFX+0, "mutants/Rogue.class"); try { JarFile jarFile = new JarFile("/tmp/testref.jar"); FileOutputStream fos = new FileOutputStream("/tmp/test.pack"); // Call the packer packer.pack(jarFile, fos); jarFile.close(); fos.close(); File f = new File("/tmp/test.pack"); FileOutputStream fostream = new FileOutputStream("/tmp/test.jar"); JarOutputStream jostream = new JarOutputStream(fostream); Unpacker unpacker = Pack200.newUnpacker(); // Call the unpacker unpacker.unpack(f, jostream); // Must explicitly close the output. jostream.close(); } catch (IOException ioe) { ioe.printStackTrace(); }
用 gzip 壓縮的 Pack200 檔案可以宿主在 HTTP/1.1 Web 伺服器上。部署應用程序可以使用 "Accept-Encoding=pack200-gzip"。這向伺服器指示客戶機應用程序需要的是用 Pack200 編碼並用 gzip 進一步壓縮的檔案版本。有關細節和技術的更多資訊,請參閱 Java Deployment Guide。
除非另行說明,否則將 null 參數傳遞給此類別中的建構子或方法都會拋出 NullPointerException
。
巢狀類別摘要 | |
---|---|
static interface |
Pack200.Packer
打包器引擎把各種轉換應用到輸入 JAR 檔案,從而可以通過壓縮器(如 gzip 或 zip)高度壓縮打包串流。 |
static interface |
Pack200.Unpacker
解包器引擎將打套件的串流轉換為 JAR 檔案。 |
方法摘要 | |
---|---|
static Pack200.Packer |
newPacker()
獲取一個實作 Packer 的新的類別實例。 |
static Pack200.Unpacker |
newUnpacker()
獲取一個實作 Unpacker 的新的類別實例。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
方法詳細資訊 |
---|
public static Pack200.Packer newPacker()
如果定義了系統屬性 java.util.jar.Pack200.Packer,那麼該值將為具體實作類別(必須實作 Packer)的完全限定名稱。載入並實例化此類別。如果此進程失敗,則拋出未指定錯誤。
如果尚未用系統屬性指定實作,那麼實例化系統預設的實作類別並返回結果。
註:如果多個執行緒同時使用返回的物件,則無法保證返回的物件操作正確。多執行緒應用程序應該分派多個打包器引擎,或者利用一個鎖來順序使用一個引擎。
public static Pack200.Unpacker newUnpacker()
如果定義了系統屬性 java.util.jar.Pack200.Unpacker,那麼該值將為具體實作類別(必須實作 Unpacker)的完全限定名稱。載入並實例化此類別。如果此進程失敗,則拋出未指定錯誤。
如果尚未用系統屬性指定實作,那麼實例化系統預設的實作類別並返回結果。
註:如果多個執行緒同時使用返回的物件,則無法保證返回的物件操作正確。多執行緒應用程序應該分派多個解包器引擎,或者利用一個鎖來順序使用一個引擎。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 全部類別 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。