JAVA压缩文件
import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/** * @author zhaoliangyuan * @E-mail zhao19860603@163.com * @dateTime 2010/7/20 上午 10:44:50 类说明: * 壓縮文件 */public class Test24 {public static void main(String[] args) {Test24 recursiveZip = new Test24();System.out.println("====開始====");try {OutputStream os = new FileOutputStream("D:/test.rar");BufferedOutputStream bs = new BufferedOutputStream(os);ZipOutputStream zo = new ZipOutputStream(bs);// recursiveZip.zip("e:/recursive-zip/中文文件名.txt", new// File("e:/recursive-zip"), zo, true, true);recursiveZip.zip("D:/temp", new File("D:/temp"), zo, true, true);zo.closeEntry();zo.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}System.out.println("====完成====");}/** * @param path * 要压缩的路径, 可以是目录, 也可以是文件. * @param basePath * 如果path是目录,它一般为new File(path), 作用是:使输出的zip文件以此目录为根目录, * 如果为null它只压缩文件, 不解压目录. * @param zo * 压缩输出流 * @param isRecursive * 是否递归 * @param isOutBlankDir * 是否输出空目录, 要使输出空目录为true,同时baseFile不为null. * @throws IOException */public void zip(String path, File basePath, ZipOutputStream zo, boolean isRecursive, boolean isOutBlankDir) throws IOException {File inFile = new File(path);File[] files = new File;if (inFile.isDirectory()) { // 是目录files = inFile.listFiles();} else if (inFile.isFile()) { // 是文件files = new File;files = inFile;}byte[] buf = new byte;int len;// System.out.println("baseFile: "+baseFile.getPath());for (int i = 0; i < files.length; i++) {String pathName = "";if (basePath != null) {if (basePath.isDirectory()) {pathName = files.getPath().substring(basePath.getPath().length() + 1);} else {// 文件pathName = files.getPath().substring(basePath.getParent().length() + 1);}} else {pathName = files.getName();}System.out.println(pathName);if (files.isDirectory()) {if (isOutBlankDir && basePath != null) {zo.putNextEntry(new ZipEntry(pathName + "/")); // 可以使空目录也放进去}if (isRecursive) { // 递归zip(files.getPath(), basePath, zo, isRecursive, isOutBlankDir);}} else {FileInputStream fin = new FileInputStream(files);zo.putNextEntry(new ZipEntry(pathName));while ((len = fin.read(buf)) > 0) {zo.write(buf, 0, len);}fin.close();}}}}
页:
[1]