[Java]对新创建Zip文件的子项设置 压缩/存储 模式

Zip文件的子项有6种压缩模式分别为:存储、最快、较快、标准、较好、最好。

本例子通过演示复制一个Zip文件,对其子项设置最好、存储两种模式抛砖引玉,做个备份。呵呵...

 

1.通过JarOutputStream.setLevel(Deflater.BEST_COMPRESSION)设置压缩模式

2.通过JarEntry.getMethod()来获取仅存储或使用压缩模式。

3.对于想保留一些原有属性的子项,可以用下面的代码新增:

jos.putNextEntry(new JarEntry(entry));

代码如下:

 

package lab.sodino.copyzipfile; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.jar.JarEntry; import java.util.jar.JarInputStream; import java.util.jar.JarOutputStream; import java.util.zip.Deflater; /** *@author Sodino Email:sodinoopen@hotmail<br/> *@version 2011-1-17 下午10:32:29 */ public class CopyTest01 { public static void main(String[] args) throws Exception { File srcFile = new File("AngryBirds.apk"); File desFile = new File("copy_jar.apk"); if (desFile.exists()) { desFile.delete(); System.out.println("desFile has existed, Do delete."); } desFile.createNewFile(); JarInputStream jis = null; JarOutputStream jos = null; jis = new JarInputStream(new FileInputStream(srcFile)); jos = new JarOutputStream(new FileOutputStream(desFile)); // 对于apk中的压缩方式为BEST_COMPRESSION模式,其它模式请查看文档。 jos.setLevel(Deflater.BEST_COMPRESSION); JarEntry entry = null; while ((entry = jis.getNextJarEntry()) != null) { System.out .println(entry.getName() + " method=" + entry.getMethod()); if (entry.getMethod() == JarEntry.STORED) { jos.putNextEntry(new JarEntry(entry)); } else { JarEntry tmp = new JarEntry(entry.getName()); jos.putNextEntry(tmp); } int num = -1; while ((num = jis.read()) != -1) { jos.write(num); } jos.flush(); } jos.close(); jis.close(); System.out.println("CopyTest.main() End"); } }

 

本文内容归CSDN博客博主Sodino 所有

转载请注明出处: http://blog.csdn.net/sodino/archive/2011/01/17/6148179.aspx

你可能感兴趣的:(java,exception,String,File,存储,compression)