Java编写的模仿360压缩工具–原创

第一步:建立压缩格式和压缩byte

package util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Collection;import java.util.Enumeration;import java.util.zip.ZipFile;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream;/** * *@author huyongjian Oracle(Compus Solution Group) * @Date 2013-8-2 * @version 2.0 * @since JDK1.6(建议)Copy Right Information COMPUS SOLUTION GROUPIDE:Eclipseclass: */public class Compression {private static final int BUFF_SIZE = 1024 * 1024;//1M Byte/*** 批量压缩文件(夹)* @param resFileList 要压缩的文件(夹)列表* @param zipFile生成的压缩文件* @throws IOException 当压缩过程出错时抛出*/public static void zipFiles(Collection<File> resFileList, File zipFile) throws IOException {ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFF_SIZE));for (File resFile : resFileList) {zipFile(resFile, zipout, “”);}zipout.close();}/*** 批量压缩文件(夹)* @param resFileList 要压缩的文件(夹)列表* @param zipFile生成的压缩文件* @param comment压缩文件的注释* @throws IOException 当压缩过程出错时抛出*/public static void zipFiles(Collection<File> resFileList, File zipFile, String comment) throws IOException {ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFF_SIZE));for (File resFile : resFileList) {zipFile(resFile, zipout, “”);}zipout.setComment(comment);zipout.close();}/*** 解压缩一个文件* @param zipFile压缩文件* @param folderPath 解压缩的目标目录* @throws IOException 当压缩过程出错时抛出*/public static void upZipFile(File zipFile, String folderPath) throws IOException {ZipFile zf = new ZipFile(zipFile);for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {ZipEntry entry = ((ZipEntry) entries.nextElement());InputStream in = zf.getInputStream(entry);OutputStream out = new FileOutputStream(folderPath + File.separator + entry.getName());byte buffer[] = new byte[BUFF_SIZE];int realLength;while ((realLength = in.read(buffer)) > 0) {out.write(buffer, 0, realLength);}in.close();out.close();}}private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath) throws IOException {rootpath = rootpath + (rootpath.trim().length() == 0 ? “” : File.separator) + resFile.getName();if (resFile.isDirectory()) {File[] fileList = resFile.listFiles();for (File file : fileList) {zipFile(file, zipout, rootpath);}} else {byte buffer[] = new byte[BUFF_SIZE];BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile), BUFF_SIZE);zipout.putNextEntry(new ZipEntry(rootpath));int realLength;while ((realLength = in.read(buffer)) != -1) {zipout.write(buffer, 0, realLength);}in.close();zipout.flush();zipout.closeEntry();}}}

第二步:简单测试

package test;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Collection;import util.Compression;/** * *@author huyongjian Oracle(Compus Solution Group) * @Date 2013-7-25 * @version 2.0 * @since JDK1.6(建议)Copy Right Information COMPUS SOLUTION GROUPIDE:Eclipseclass: */public class CompressionTest {public static void main(String[] args) throws IOException {Collection<File> resFileList = new ArrayList<File>();resFileList.add(new File(“C:\\这是一个测试文件.doc”));File zipFile = new File(“C:\\txxxt.zip”);Compression.zipFiles(resFileList, zipFile);}}

读者朋友在你的C盘建立一个—— 这是一个测试文件.doc——运行CompressionTest.java文件在你的C盘出现的这个txxxt.zip文件

这个两个包我下面会上传进来的!

Java程序猿-160243674 欢迎大家的加入!

本文出自 “诺言永远依恋小柴、、、” 博客,香港虚拟主机,请务必保留此出处

,香港服务器风不懂云的漂泊,天不懂雨的落魄,眼不懂泪的懦弱,

Java编写的模仿360压缩工具–原创

相关文章:

你感兴趣的文章:

标签云: