import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.Enumeration;import java.util.List;
import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;
public class UpZip {
/** * @param args */ public static List<String> upZipFile(String zippath,String zipdir) throws Exception{ ZipFile zfile=new ZipFile(zippath); Enumeration<ZipEntry> zList=zfile.getEntries(); ZipEntry ze=null; byte[] buf=new byte[2048]; List<String> namelist=new ArrayList(); while(zList.hasMoreElements()){ ze=(ZipEntry)zList.nextElement(); if(ze.isDirectory()){ File f=new File(zipdir); f.mkdir(); continue; } namelist.add(ze.getName()); OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(zipdir, ze.getName()))); InputStream is=new BufferedInputStream(zfile.getInputStream(ze)); int readLen=0; while ((readLen=is.read(buf, 0, 2048))!=-1) { os.write(buf, 0, readLen); } is.close(); os.close(); } zfile.close(); return namelist; } public static File getRealFileName(String baseDir, String absFileName){ String[] dirs=absFileName.split("/"); File ret=new File(baseDir); if(dirs.length>1){ for (int i = 0; i < dirs.length-1;i++) { ret=new File(ret, dirs[i]); } if(!ret.exists()) ret.mkdirs(); ret=new File(ret, dirs[dirs.length-1]); return ret; } return ret; } public static void main(String[] args) { try { UpZip.upZipFile("f://bg.zip", "f:/ff"); } catch (Exception e) { e.printStackTrace(); }
}
}
