Java实现压缩文件的解压缩操作,缺点是压缩文件内不能含有文件名为中文的的文件,否则会出现如下错误:
复制代码代码如下:
	
	Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED
	 at java.util.zip.ZipCoder.toString(Unknown Source)
	 at java.util.zip.ZipInputStream.readLOC(Unknown Source)
	 at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
	 at com.javatest.techzero.gui.ZipFileDemo.main(ZipFileDemo.java:22)
代码:
复制代码代码如下:
		
		package com.javatest.techzero.gui;
		import java.io.File;
		import java.io.FileInputStream;
		import java.io.FileOutputStream;
		import java.io.InputStream;
		import java.io.OutputStream;
		import java.util.zip.ZipEntry;
		import java.util.zip.ZipFile;
		import java.util.zip.ZipInputStream;
		public class ZipFileDemo {
		 @SuppressWarnings("resource")
		 public static void main(String args[]) throws Exception {
		  File file = new File("d:" + File.separator + "test.zip");
		  File outFile = null;
		  ZipFile zipFile = new ZipFile(file);
		  ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file));
		  ZipEntry entry = null;
		  InputStream input = null;
		  OutputStream out = null;
		  while ((entry = zipInput.getNextEntry()) != null) {
		   System.out.println("开始解压缩" + entry.getName() + "文件。。。");
		   outFile = new File("d:" + File.separator + entry.getName());
		   if (!outFile.getParentFile().exists()) {
		    outFile.getParentFile().mkdir();
		   }
		   if (!outFile.exists()) {
		    outFile.createNewFile();
		   }
		   input = zipFile.getInputStream(entry);
		   out = new FileOutputStream(outFile);
		   int temp = 0;
		   while ((temp = input.read()) != -1) {
		   <SPAN style="WHITE-SPACE: pre"> </SPAN>//System.out.println(temp);
		    out.write(temp);
		   }
		   input.close();
		   out.close();
		  }
		  System.out.println("Done!");
		 }
		}
本文链接:https://my.lmcjl.com/post/8468.html
 
                    
4 评论