已有259人关注
ZIP压缩时抛出(求助)——— NullPointerException
发表在Java答疑区 2021-08-13 悬赏:1 学分
是否精华
版块置顶:

package ccc.my;

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 Juneibulei {
 public static void main(String[] args) {
  hh();
 }

 public static void hh() {
  File nihao2 = new File("E:\\明日科技教程\\java视频\\");// 源文件
  File nihao = new File("D:\\WODW.zip");// 压缩包目录
  ZipOutputStream ya = null;
  try {
   ya = new ZipOutputStream(new FileOutputStream(nihao));// 创建zip输出流用来写入读取源文件的数据,实现压缩
   if (nihao2.isDirectory()) {
    for (File v : nihao.listFiles()) {
     yashou(ya, v,new StringBnffer(""));

     ysbml = new StringBuffer("");    
   } else {
    yashou(ya, nihao2,new StringBuffer(""));
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } finally {
   try {
    ya.close();//此方法执行完,关闭ya释放资源
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

 static void yashou(ZipOutputStream ya, File v,StringBuffer ysbml) {
  FileInputStream xie = null;
  if (v.isFile()) {
   try {

    xie = new FileInputStream(v);
    byte[] hcq = new byte[1234]; // 定义xie的字节缓冲区
    int b = -1; // 用来获取写入hcq的长度,范围在0~1233
    ya.putNextEntry(new ZipEntry(ysbml + v.getName()));// 在压缩包或条目中新建目录
    while ((b = xie.read(hcq)) != -1) {
     ya.write(hcq, 0, b);//因为当读到尾是数据最后字节数据可能不满1234个,就采用此方法
     ya.finish();// 刷新操作
    }

    ya.closeEntry();// 关闭此条目,因为此条目已写入数据
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
  } else {
   for (File vv : v.listFiles()) {
    yashou(ya, vv);
    ysbml.append(vv.getName() + File.separator);
   }
  }
  try {
   xie.close();//当此方法运行结束时关闭xie
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}//自己仿照课程、sl的历程、视频教程的逻辑复写的感觉逻辑好想没问题但总是抛出异常

异常信息:Exception in thread "main" java.lang.NullPointerException
 at ccc.my.Juneibulei.hh(Juneibulei.java:24)
 at ccc.my.Juneibulei.main(Juneibulei.java:14)

2021-08-15 11:12:21编辑
分享到:
精彩评论 4
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2021-08-17
沙发

Java自带的ZIP流bug多,你想用这个功能就学习以下org.apache.tools.zip,在apache-ant.jar包中。

杨武炎_1593484131
学分:232 LV4
2021-08-17
板凳

根号申 发表于2021-08-17 08:38

Java自带的ZIP流bug多,你想用这个功能就学习以下org.apache.tools.zip,在apache-ant.jar包中。

老师,jar包是什么东西,都没学到,还有老师jar在什么地方,?

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2021-08-18
地板

Java程序封装的包就是jar包,你可以查一下如何到导入jar包

杨武炎_1593484131
学分:232 LV4
2021-08-18
4L

根号申 发表于2021-08-17 08:38

Java自带的ZIP流bug多,你想用这个功能就学习以下org.apache.tools.zip,在apache-ant.jar包中。

2$_9(NQI4@}@~F}9LJDBZGX.png

老师我已经解决了(当文件夹到数组后的数组为null,这时执行数组操作就会空指针异常),还添加了进度,老师那可以帮我看看zip解压的吗(问题抛出非法参数异常,但当我把解压缩原路径改了以后,就没有这个异常),已经发在了社区中,老师注意看看下面弟26行的,

 

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照