| 
 | JavaTM 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 格式。
  
下面是使用打包器和解包器的一个示例: 
  
用 gzip 压缩的 Pack200 文件可以宿主在 HTTP/1.1 Web 服务器上。部署应用程序可以使用 "Accept-Encoding=pack200-gzip"。这向服务器指示客户机应用程序需要的是用 Pack200 编码并用 gzip 进一步压缩的文件版本。有关细节和技术的更多信息,请参阅 Java Deployment Guide。
  
除非另行说明,否则将 null 参数传递给此类中的构造方法或方法都会抛出  
 
    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();
    }
 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 Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。