使用java.util.zip压缩、解压文件
jopen
12年前
压缩文件:
import java.util.zip.*; import java.io.*; public class ZipTest { public static void main(String[] args) { if (args.length < 1) { System.out.println("请输入参数:javac ZipTest 需压缩的文件名及路径 保存的文件名及路径。(e.g. c:/test.txt)"); } else { ZipCompressor compressor = new ZipCompressor(); boolean isSuccessful= compressor.zipCompress(args, args[args.length - 1]); if (isSuccessful) { System.out.println("文件压缩成功。"); } else { System.out.println("文件压缩失败。"); } } } } class ZipCompressor { public ZipCompressor() {} /**@param srcFiles 需压缩的文件路径及文件名 * @param desFile 保存的文件名及路径 * @return 如果压缩成功返回true */ public boolean zipCompress(String[] srcFiles, String desFile) { boolean isSuccessful = false; String[] fileNames = new String[srcFiles.length-1]; for (int i = 0; i < srcFiles.length-1; i++) { fileNames[i] = parse(srcFiles[i]); } try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desFile)); ZipOutputStream zos = new ZipOutputStream(bos); String entryName = null; entryName = fileNames[0]; for (int i = 0; i < fileNames.length; i++) { entryName = fileNames[i]; // 创建Zip条目 ZipEntry entry = new ZipEntry(entryName); zos.putNextEntry(entry); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFiles[i])); byte[] b = new byte[1024]; while (bis.read(b, 0, 1024) != -1) { zos.write(b, 0, 1024); } bis.close(); zos.closeEntry(); } zos.flush(); zos.close(); isSuccessful = true; } catch (IOException e) { } return isSuccessful; } // 解析文件名 private String parse(String srcFile) { int location = srcFile.lastIndexOf("/"); String fileName = srcFile.substring(location + 1); return fileName; } }
解压文件:
import java.util.zip.*; import java.io.*; public class UnzipTest { public static void main(String[] args) { if (args.length != 1) { System.out.println("请输入正确参数:java UnzipTest 需解压的文件(e.g. d:/test.zip)"); } else { Unzip unzip = new Unzip(); if (unzip.unzip(args[0])) { System.out.println("文件解压成功。"); } else { System.out.println("文件解压失败。"); } } } } class Unzip { public Unzip() {} /* * @param srcZipFile 需解压的文件名 * @return 如果解压成功返回true */ public boolean unzip(String srcZipFile) { boolean isSuccessful = true; try { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcZipFile)); ZipInputStream zis = new ZipInputStream(bis); BufferedOutputStream bos = null; //byte[] b = new byte[1024]; ZipEntry entry = null; while ((entry=zis.getNextEntry()) != null) { String entryName = entry.getName(); bos = new BufferedOutputStream(new FileOutputStream("d:/" + entryName)); int b = 0; while ((b = zis.read()) != -1) { bos.write(b); } bos.flush(); bos.close(); } zis.close(); } catch (IOException e) { isSuccessful = false; } return isSuccessful; } }