ZipOutputStream 生成压缩文件,用winrar打开后报”不可预料的压缩文件末端”错误

news/2024/11/7 21:08:55/

问题产生的原因:可能是用到文件流未正确关闭

解决办法是:1.检查待压缩文件的流是否都正常关闭,且按顺序

2.生成压缩文件的过程中用到的流是否正常关闭,且按顺序

 try {File zipFile = new File(fileName);fileName = zipFile.getName();if(!zipFile.exists())zipFile.createNewFile();FileOutputStream f = new FileOutputStream(zipFile);/*** 作用是为任何OutputStream产生校验和* 第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种)*/CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
//            // 用于将数据压缩成Zip文件格式ZipOutputStream zos = new ZipOutputStream(csum);List<String> filePaths = compressDTO.getFilePaths();for (int i = 0; i < filePaths.size(); i++) {String path = filePaths.get(i);/* 获取Object,返回结果为OSSObject对象 */OSSObject ossObject = client.getObject(config.getAliyunBucketName(), path);// 读去Object内容  返回InputStream inputStream = ossObject.getObjectContent();// 对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法,确保压缩包里面文件不同名
//                zos.putNextEntry(new ZipEntry(ossfile.getKey().split("/")[2]));String substring = path.substring(path.lastIndexOf("/")+1);String replace = substring.replace("_", "/");zos.putNextEntry(new ZipEntry(replace + "/" + substring));int bytesRead = 0;// 向压缩文件中输出数据while ((bytesRead = inputStream.read()) != -1) {zos.write(bytesRead);}inputStream.close();}zos.close();client.shutdown();} catch (Exception e) {log.info("压缩文件报错:" + e.getMessage());} finally {}


http://www.ppmy.cn/news/588412.html

相关文章

压缩包打开密码解决办法

rar、zip、7z格式的压缩包有打开密码&#xff0c;如果不知道打开密码&#xff0c;我们可以通过 破解软件尝试破解打开密码。 打开软件把压缩包添加到软件中&#xff0c;选择一个找回方法&#xff0c;点击【下一步】跟着软件提示进行操作就可以开始破解密码了。 组合破解、掩码…

SpringBoot下载文件打不开的解决办法

吸取教训主要是是下载文件打不开&#xff0c;是因为当前页面输入流不能直接连接打开。需要新的连接进行打开点击下载。 http://localhost:8081/tm/corpus/infomation/downloadInfoTemplate 主要是分俩步骤进行&#xff0c;一是生产连接&#xff0c;然后弹出框然后进行下载就可以…

前端下载zip出现文件打不开

因为后端传递过来的是zip流的形式&#xff0c;在返回数据中data里面的数据为类似与base64的格式&#xff0c;我们平常处理的时候是将data里的数据转换成blob的形式。在此步我们就做错了&#xff0c;我们应当在请求的时候加上responseType: "blob"&#xff0c;这样我们…

StringBuilder和StringBuffer

StringBuilder和StringBuffer 目录 StringBuilder和StringBuffer特点常见方法练习&#xff1a;测试字符串连接StringBuilder和StringBuffer的区别 特点 封装了char[]数组 是可变的字符序列 提供了一组可以对字符内容修改的方法 常用append()来代替字符串做字符串连接”” 内部…

计算机打不开找不到应用程序,win10系统打不开压缩包提示“找不到应用程序的方法...

win10系统使用久了&#xff0c;好多网友反馈说win10系统打不开压缩包提示“找不到应用程序的问题&#xff0c;非常不方便。有什么办法可以永久解决win10系统打不开压缩包提示“找不到应用程序的问题&#xff0c;面对win10系统打不开压缩包提示“找不到应用程序的图文步骤非常简…

计算机考试准考证压缩包打不开

ZIP是一种相当简单的分别压缩每个文件的存档格式&#xff0c;在我们操作的电脑中&#xff0c;每当接收一些文件时常常都是zip文件格式&#xff0c;这时我们就可以通过解压文件的方式来进行打开&#xff0c;但是有些用户却遇到了无法打开的情况&#xff0c;那么zip文件怎么打不开…

在电脑上解压计算机试题打不开,电脑打不开压缩包怎么办|电脑打不开压缩包的解决方法...

电脑的压缩文件达到节省空间的作用&#xff0c;一些用户反馈说从网上下载的压缩包打不开&#xff0c;这是为什么呢&#xff1f;无法打开压缩文件是因为电脑中没有安装解压软件&#xff0c;这时候我们需要下载一个解压缩的插件才行。本文小编详细告诉大家一下电脑打不开压缩包的…

压缩包文件打开密码如何破解

想要破解压缩包文件的打开密码&#xff0c;是需要用到破解软件的帮助的&#xff0c;比如奥凯丰 压缩包解密大师 【压缩包解密大师】快速找回密码_轻松移除使用限制-奥凯丰okfone压缩包大师是奥凯丰推出的一款可以找回RAR打开密码以及移除RAR使用限制的软件&#xff0c;使用户可…