写着玩的zip解压和压缩zip文件

 import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Enumeration;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;


public class ZipTest {
 public static void main1(String[] args) {
  try {
   listEntry("ant.zip");
  } catch (IOException e) {
   System.out.println("列举目录出错");
   return;
  }
  System.out.println("列举目录成功");
 }
 public static void  createFolder(boolean isDirectory,String src){
  String[] str = src.split("/");
  StringBuilder sb = new StringBuilder();
  for(int i=0;i<str.length;i++){
   if(!isDirectory && i==str.length-1){
    break;
   }
   sb.append(str[i]+"//");
   File file = new File(sb.toString());
   if(!file.exists()){
    file.mkdir();
   }
  }
 }
 public static void zip(String source,String destination) throws IOException{
  OutputStream out = new FileOutputStream(destination);
  ZipOutputStream zipOutput = new ZipOutputStream(out);
  ZipProcess(source,source,zipOutput);
  zipOutput.close();
 }
 public static void ZipProcess(String before,String source,ZipOutputStream output) throws IOException{
  File file = new File(source);
  File[] files = file.listFiles();
  for(File tmpFile:files){
   if(tmpFile.isDirectory()){
    String entryName = tmpFile.getAbsolutePath().substring(before.length()+1)+"//";
    output.putNextEntry(new ZipEntry(entryName));
    ZipProcess(before,tmpFile.getAbsolutePath(),output);
   }else{
    String entryName = tmpFile.getAbsolutePath().substring(before.length()+1);
    output.putNextEntry(new ZipEntry(entryName));
    InputStream in = new FileInputStream(tmpFile);
    byte[] bys = new byte[2048];
    int read = 0;
    while((read = in.read(bys))!=-1){
     output.write(bys, 0, read);
    }
   }
   output.closeEntry();
  }
 }
 public static void main3(String[] args) {
  try {
   zip("D://迷你游戏","d://a.zip");
  } catch (IOException e) {
   System.out.println("压缩失败");
   return;
  }
  System.out.println("文件夹压缩成功");
 }
 
 public static void listEntry(String src) throws IOException{
  ZipFile zipFile = new ZipFile(src);
  Enumeration entries = zipFile.getEntries();
  while(entries.hasMoreElements()){
   ZipEntry zipEntry = (ZipEntry) entries.nextElement();
   System.out.println(zipEntry.getName());
  }
 }
 
 public static void main2(String[] args) throws IOException {
  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("result.txt")));
  String src = null;
  OutputStream output  = new FileOutputStream("asd.zip");
  ZipOutputStream zipOutputStream = new ZipOutputStream(output);
  while((src = br.readLine())!=null){
   zipOutputStream.putNextEntry(new ZipEntry(src));
   zipOutputStream.closeEntry();
  }
  zipOutputStream.close();
 }
 
 public static void unzip(String fileSrc) throws IOException{
  ZipFile zipFile = new ZipFile(fileSrc);
  Enumeration entries = zipFile.getEntries();
  while(entries.hasMoreElements()){
   ZipEntry zipEntry = (ZipEntry) entries.nextElement();
   boolean isDirectory = zipEntry.isDirectory();
   String name = zipEntry.getName();
   if(isDirectory){
    createFolder(true,name);
   }else{
    createFolder(false,name);
    InputStream in = zipFile.getInputStream(zipEntry);
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(name));
    byte[] bys = new byte[2048];
    int read = 0;
    while((read = in.read(bys))!=-1){
     bos.write(bys, 0, read);
     bos.flush();
    }
    bos.close();
   }
  }
  zipFile.close();
 }
 public static void main(String[] args) {
  try {
   unzip("ant.zip");
  } catch (IOException e) {
   System.out.println("文件解压失败");
   return;
  }
  System.out.println("文件解压成功");
 }
 
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值