求JAVA解压缩文件目录的源代码

2025-06-20 08:19:12
推荐回答(3个)
回答1:

package com.io2.homework;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/*压缩文件夹*/
public class MyMultipleFileZip 
{
 private String currentZipFilePath = "F:/MyZip.zip";
 private String sourceFilePath;
 private ZipOutputStream zos;
 private FileInputStream fis;
 
 public MyMultipleFileZip(String sourceFilePath) 
 {
  try
  {
   this.sourceFilePath = sourceFilePath;
   zos = new ZipOutputStream(new FileOutputStream(currentZipFilePath));
   //设定文件压缩级别
   zos.setLevel(9);
  } catch (FileNotFoundException e) 
  {
   e.printStackTrace();
  }
 }

 // 在当前条目中写入具体内容
 public void writeToEntryZip(String filePath) 
 {
  try
  {
   fis = new FileInputStream(filePath);
  } catch (FileNotFoundException e1) 
  {
   e1.printStackTrace();
  }
  byte[] buff = new byte[1024];
  int len = 0;
  try 
  {
   while ((len = fis.read(buff)) != -1)
   {
    zos.write(buff, 0, len);
   }
  } catch (IOException e) 
  {
   e.printStackTrace();
  }finally
  {
   if (fis != null)
   try 
   {
     fis.close();
   } catch (IOException e) 
   {
     e.printStackTrace();
   }
  }
 }

 // 添加文件条目
 public void addFileEntryZip(String fileName) 
 {
  try 
  {
   zos.putNextEntry(new ZipEntry(fileName));
  } catch (IOException e) 
  {
   e.printStackTrace();
  }
 }

 public void addDirectoryEntryZip(String directoryName)
 {
  try 
  {
   zos.putNextEntry(new ZipEntry(directoryName + "/"));
  } catch (IOException e)
  {
   e.printStackTrace();
  }
 }

 // 遍历文件夹
 public void listMyDirectory(String filePath)
 {
  File f = new File(filePath);
  File[] files = f.listFiles();
  if(files!=null)
  {
   for (File currentFile : files) 
   {
    // 设置条目名称(此步骤非常关键)
    String entryName= currentFile.getAbsolutePath().split(":")[1].substring(1);
    // 获取文件物理路径
    String absolutePath = currentFile.getAbsolutePath();
    if (currentFile.isDirectory()) 
    {
     addDirectoryEntryZip(entryName);
     //进行递归调用
     listMyDirectory(absolutePath);
    
    }
    else 
    {
     addFileEntryZip(entryName);
     writeToEntryZip(absolutePath);
    }
   }
  }
 }

 // 主要流程
 public void mainWorkFlow()
 {
  listMyDirectory(this.sourceFilePath);
  if(zos!=null)
  try 
  {
    zos.close();
  } catch (IOException e) 
  {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) 
 {
  new MyMultipleFileZip("F:/fountainDirectory").mainWorkFlow();
 }
}

回答2:

你打开你解压的文件夹,里面有个src,里面的.Java文件就是源文件

回答3:

什么意思