Java I/O How to - Pack with Pack200








Question

We would like to know how to pack with Pack200.

Answer

        //w ww . j ava2s.co m

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.jar.JarOutputStream;
import java.util.jar.Pack200;
import java.util.zip.GZIPInputStream;

public class MainClass {

  public static void main(String[] args) throws Exception {

    String inName = args[0];
    String outName;
    if (inName.endsWith(".pack.gz")) {
      outName = inName.substring(0, inName.length() - 8);
    } else if (inName.endsWith(".pack")) {
      outName = inName.substring(0, inName.length() - 5);
    } else {
      outName = inName + ".unpacked";
    }

    JarOutputStream out = null;
    InputStream in = null;

    Pack200.Unpacker unpacker = Pack200.newUnpacker();
    out = new JarOutputStream(new FileOutputStream(outName));
    in = new FileInputStream(inName);
    if (inName.endsWith(".gz"))
      in = new GZIPInputStream(in);
    unpacker.unpack(in, out);
    out.close();
  }
}