JAVA ZIP输入输出流(遇到的问题我的文件找不到,文件中或者多建立了一个盘)

就我的电脑而言
压缩的例子

import java.io.*;
import java.util.zip.*;


public class Fifteen5 {

private void zip(String zipFileName,File inputFile) throws Exception{
  ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
  zip(out,inputFile,"");
  System.out.println("压缩中。。。");
  out.close();
 }
 
 private void zip(ZipOutputStream out,File inputFile,String base) throws Exception{
  if(inputFile.isDirectory()){
   File[] fl=inputFile.listFiles();
   if(base.length()!=0){
    
    out.putNextEntry(new ZipEntry(base+"/"));
   }
   for(int i=0;i<fl.length;i++){
    zip(out,fl[i],base+fl[i]);
   }
  }else{
   out.putNextEntry(new ZipEntry(base));
   FileInputStream in=new FileInputStream(inputFile);
   int b;
   System.out.println(base);
   while((b=in.read())!=-1){
    out.write(b);
   }
   in.close();
  }
 }
 
 public static void main(String[] args) {
  Fifteen5 book=new Fifteen5();
  try {
   book.zip("D:/wangjunjie.zip",new File("D:/wangjunjie"));
   System.out.println("压缩完成");
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }

解压的例子

package exercise;

import java.io.File;
import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class Decompressing { // 创建文件

 public static void main(String[] temp) {
  ZipInputStream zin; // 创建ZipInputStream对象
  try { // try语句捕获可能发生的异常
   zin = new ZipInputStream(new FileInputStream("wangjunjie.zip"));
   // 实例化对象,指明要进行解压的文件  
   ZipEntry entry = null; // 获取下一个ZipEntry
   while (((entry = zin.getNextEntry()) != null)
     && !entry.isDirectory()) {
    // 如果entry不为空,并不在同一目录下
    File file = new File("D:\\" + entry.getName()); // 获取文件目录
    System.out.println(file);
    if (!file.exists()) { // 如果该文件不存在
     file.mkdirs();// 创建文件所在文件夹
     file.createNewFile(); // 创建文件
    }
    zin.closeEntry(); // 关闭当前entry
    System.out.println(entry.getName() + "解压成功");
   }
   zin.close(); // 关闭流
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

**问题一:**在文件中多建立了一个盘
在这里插入图片描述

问题解决:是因为你在压缩的时候book.zip()的第二个参数多加了一个盘但是你不加他又会报错(找不到文件)那你就需要找到你的java文件存在哪里,并且在与src的文件相同的文件层建立就可以了
在这里插入图片描述

问题二:为什么src文件可以不用加盘就可以找到,而其他文件必须加盘,但是文件里面会多建一个盘
在这里插入图片描述

问题解决:是因为src在这个项目的里面所以可以找到而其它文健没有建在该项目中,所以和第一问题的措施一样建在相同的目录中就可以了

Java,你可以使用`java.util.zip`包的`ZipInputStream`和`ZipOutputStream`来进行zip文件的解压缩。下面是一个基本的示例,它解压一个zip文件到指定的目标目录: ```java import java.io.*; import java.util.Enumeration; import java.util.zip.*; public class UnzipExample { public static void main(String[] args) { String sourceZip = "/path/to/source.zip"; String destinationDir = "/path/to/destination/"; try { // 创建目标目录(如果不存在) File destFolder = new File(destinationDir); if (!destFolder.exists()) { destFolder.mkdirs(); } // 创建输入和输出流 FileInputStream fis = new FileInputStream(sourceZip); ZipInputStream zis = new ZipInputStream(fis); ZipEntry entry; while ((entry = zis.getNextEntry()) != null) { // 检查是否是目录 if (!entry.isDirectory()) { // 获取输出文件路径 String filePathInDest = destinationDir + entry.getName(); // 创建目标文件 FileOutputStream fos = new FileOutputStream(filePathInDest); // 解压内容到目标文件 byte[] buffer = new byte[1024]; int length; while ((length = zis.read(buffer)) >= 0) { fos.write(buffer, 0, length); } // 关闭流 fos.close(); } // 关闭当前条目的输入流 zis.closeEntry(); } // 关闭zip输入流 zis.close(); System.out.println("Unzipping complete!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 这个示例假设源zip文件已经存在,并且目标目录可以访问。运行这个程序后,源zip文件的内容会被解压到指定的`destinationDir`下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值