解压zip文件错误79 - 不适当的文件类型或格式

window查看解压问题最后一个文件大小为0kb

原因是没有正确的关闭流

正确的

 File zip = File.createTempFile("BathExportZip", ".zip");
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip));
        for (int i = 0; i < workbookList.size(); i++) {
            XSSFWorkbook workbook = workbookList.get(i);

            // 使用 ByteArrayOutputStream 将工作簿写入字节数组
            try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
                workbook.write(baos);  // 将工作簿写入 ByteArrayOutputStream
                byte[] bytes = baos.toByteArray();
                Long statementId = statementListId.get(i);
               
                // 自定义文件名
                String fileName =  "-" + Instant.now().toEpochMilli()+".xlsx";

                ZipEntry entry = new ZipEntry(fileName);
                zos.putNextEntry(entry);  // 将 ZipEntry 添加到压缩文件

                // 将工作簿的字节数据写入 ZIP 文件
                zos.write(bytes);
                zos.closeEntry();
                baos.close();
                try {
                    Thread.sleep(50L);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        zos.close();
        //保存的oss并且删除本地
        zip.delete();

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐