Java程序实现压缩某目录

本文提供了一个使用Java进行文件压缩的示例代码,演示了如何将指定目录下的所有文件及子目录压缩成一个ZIP文件。代码中定义了常量用于指定文件分隔符和缓冲区大小,并通过递归方式处理目录及其内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class TestZip {

  public static String SERPEROT = "/";

  public static int BUFFER = 2048;

  public static void main(String args[]){

  zip("e:/hello/", "e:/hello.zip");

  }

  public static void zip(String srcFile, String descFile){

  ZipOutputStream zos = null;

  FileOutputStream fos = null;

  File file = null;

  try {

  fos = new FileOutputStream(descFile);

  zos = new ZipOutputStream(fos);

  file = new File(srcFile);

  String folder = srcFile.substring(srcFile.lastIndexOf("/") +1,srcFile.length());

  zip(zos,file,folder);

  } catch (FileNotFoundException e) {

  e.printStackTrace();

  }finally{

  try{

  if(zos != null){zos.close();}

  if(fos != null){fos.close();}

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  }

  private static void zip(ZipOutputStream descFile, File srcFile,String srcfolder){

  FileInputStream fis = null;

  System.out.println(srcFile.isDirectory(37美食网www.37meishi.com));

  try{

  if(srcFile.isDirectory()){

  File[] files = srcFile.listFiles();

  descFile.putNextEntry(new ZipEntry(srcfolder + "/")); //是压缩包里面的路径.

  srcfolder = srcfolder.length() == 0 ? "" : srcfolder + "/";

  System.out.println(srcfolder);

  for(int i= 0; i<files.length; i++){

  zip(descFile,files[i],srcfolder + files[i].getName());

  }

  }else{

  descFile.putNextEntry(new ZipEntry(srcfolder));

  fis = new FileInputStream(srcFile);

  byte[] bytes = new byte[2048];

  int n =0;

  while((n = fis.read(bytes)) != -1){

  descFile.write(bytes,0,n);

  }

  }

  }catch(Exception e){

  e.printStackTrace();

  }finally{

  try{

  if(fis != null){fis.close();}

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  }

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值