资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
文档供参考,可复制、编制,期待您的好评与关注! Java实现任意文件及文件夹 压缩和解压功能 -/*主程序部分*/import java.io.File;import java.io.IOException;public class ZipExample public static void main(String args) throws IOException /*解压文件*/File inFile = new File(testzip.zip);/File outFile = new File(out);/ZipTool.unzip(inFile, outFile);/*压缩文件及目录*/File files =new File(a),new File(document),new File(lib),new File(t3.text);File targetFile = new File(testzip.zip);ZipTool.zip(files,targetFile);/*工具类部分*/import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.Arrays;import java.util.Enumeration;import java.util.LinkedList;import java.util.List;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;import org.apache.tools.zip.ZipOutputStream;public class ZipTool /*解压文件 * throws IOException */public static void unzip(File inFile,File outFile) throws IOException ZipFile zipFile = new ZipFile(inFile, GBK);Enumeration em = zipFile.getEntries();byte buf = new byte1024*1024;while(em.hasMoreElements()ZipEntry ze = em.nextElement();File outItemFile = new File(outFile,ze.getName();if(ze.isDirectory()outItemFile.mkdirs();elseInputStream is = zipFile.getInputStream(ze);tryoutFile(outItemFile,is,buf); finallyis.close();private static void outFile(File outItemFile, InputStream is, byte buf) throws IOException outItemFile.getParentFile().mkdirs();FileOutputStream fos = new FileOutputStream(outItemFile);tryint len;while(len=is.read(buf)!=-1)fos.write(buf, 0, len); finallyfos.close();/*压缩文件*/public static void zip(File files,File targetFile) throws IOExceptionfiles = toAbs(files);/String parentPath = files0.getAbsoluteFile().getParent();targetFile = targetFile.getAbsoluteFile();/得到绝对路径String parentPath = files0.getParent()+;/得到父路径/System.out.println(targetFile );/System.out.println(files0.toString().replace(parentPath, );files = eachFiles(files);ZipOutputStream zos = new ZipOutputStream(targetFile);zos.setEncoding(GBK);trybyte buf = new byte1024*1024;for(File f:files)/System.out.println(f);zipFile(f,zos,parentPath,buf); finallyzos.close();private static void zipFile(File f, ZipOutputStream zos, String parentPath, byte buf) throws IOException String filename = f.toString().replace(parentPath, );if(f.isDirectory()/关键filename+=/;ZipEntry ze = new ZipEntry(filename);zos.putNextEntry(ze);tryif(f.isFile()doZip(f,zos,buf);finallyzos.closeEntry();private static void doZip(File f, ZipOutputStream zos, byte buf) throws IOException FileInputStream fis = new FileInputStream(f);int len;trywhile(len=fis.read(buf)!=-1)zos.write(buf, 0, len);finallyfis.close();private static File eachFiles(File files) List list = new ArrayList();LinkedList tasks = new LinkedList(Arrays.asList(files);while( !tasks.isEmpty() ) /System.out.println(tasks);File task = tasks.remove();list.add(task);System.out.println(task+-开始);if( !task.isDirectory() ) System.out.println(task+-wen结束);continue;for( File c : task.listFiles() ) tasks.add(c);System.out.println(task+-结束);return list.toArray(new File0);private static File toAbs(File files) ArrayList list = new ArrayList();for(File f:files)list.add(f.getAbsoluteFile();return list.toArray(new File0); /
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号