将byte[] 写成zip文件

这篇博客介绍了一段Java代码,该代码能够将`byte[]`转换为ZIP文件。博主强调了在调用`zos.finish()`方法应在转换为`byte[]`之前,以确保ZIP文件能在压缩工具中正常预览。文中提供了生成的test2.zip文件作为例子,并包含了一些测试代码。
摘要由CSDN通过智能技术生成
  • 在网上找的别的代码,稍加改动,注意zos.finish();一定要在byte[] bytes = out.toByteArray();之前,不然写出的zip文件,有的压缩工具预览不了
/**
     * 压缩byte[]方法
     *
     * @throws Exception
     */
    private static void compress() throws Exception {
   
        List<byte[]> srcFiles = new ArrayList<>();
        srcFiles.add(getBytes("404.png"));
        srcFiles.add(getBytes("500.png"));
        srcFiles.add(getBytes("back.jpg"));
        long start = System.currentTimeMillis();
        ZipOutputStream zos = null;
        ZipOutputStream zoStream = null;
        OutputStream os = null;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        OutputStream outputStream = new FileOutputStream(new File("E:\\test.zip"));
        try {
   
            zos = new ZipOutputStream(out);
            zoStream = new ZipOutputStream
### 回答1: Java可以使用POI库来进行Word文档的操作,ZipFile类来进行压缩文件的操作。具体步骤如下: 1. 首先,将要导出的数据存储到一个List中。 2. 使用POI库来创建一个新的Word文档,并将List中的每一条数据依次插入到Word文档中,形成一个单独的Word文档。 3. 将每个单独的Word文档保存为.doc或.docx格式的文件。 4. 使用ZipFile类将所有的Word文档压缩成一个.zip文件。 5. 把.zip文件发送给需要的人或存储到指定的位置。 这个过程需要使用到Java的IO操作,例如FileInputStream、FileOutputStream、ZipOutputStream等类来实现,还需要学习Java的POI和ZipFile类的使用方法。总体来说,这个过程需要一定的Java编程基础,但是学起来并不难,只要按照步骤一步一步来,就可以完成这个导出数据的过程。 ### 回答2: Java可以使用Apache POI库来实现将数据导出为Word文档。使用POI库可以创建Word文档、给文档添加表格、样式、图片、超链接等内容,并且可以将文档保存为doc或docx格式。 要实现将每一条数据导出为单独的Word文档,可以使用循环和条件语句来遍历数据,并通过POI库将数据添加到新建的Word文档中,最后保存为单独的文档。要将这些单独的Word文档压缩成一个ZIP文件,可以使用JavaZipOutputStream类,该类可以将多个文件压缩成一个ZIP文件。 具体实现中,首先要引入POI库和ZipOutputStream类所需要的依赖,然后通过循环遍历数据,将每一条数据添加到新建的Word文档中,并保存为单独的Word文件。最后,将这些单独的Word文件通过ZipOutputStream类压缩成一个ZIP文件。实现的代码可以参考以下示例: ``` import java.io.*; import java.util.zip.*; import org.apache.poi.xwpf.usermodel.*; public class WordExport { private final static String FILE_PATH = "data/"; // Word文件保存路径 private final static String ZIP_FILE_NAME = "data.zip"; // 压缩后的ZIP文件名 public static void main(String[] args) throws IOException { // 待导出的数据 String[] data = {"数据1", "数据2", "数据3"}; // 创建ZipOutputStream对象 ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(FILE_PATH + ZIP_FILE_NAME)); // 遍历数据,将每个数据导出为单独的Word文件,并压缩到ZIP文件中 for (int i = 0; i < data.length; i++) { // 新建Word文档 XWPFDocument document = new XWPFDocument(); // 添加数据到文档中 XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); run.setText(data[i]); // 保存Word文档 FileOutputStream fos = new FileOutputStream(FILE_PATH + "data" + (i + 1) + ".docx"); document.write(fos); fos.close(); // 压缩Word文件ZIP文件中 FileInputStream fis = new FileInputStream(FILE_PATH + "data" + (i + 1) + ".docx"); zos.putNextEntry(new ZipEntry("data" + (i + 1) + ".docx")); byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) > 0) { zos.write(buffer, 0, len); } zos.closeEntry(); fis.close(); } // 关闭ZipOutputStream流 zos.close(); } } ``` 上述代码中,首先定义了Word文件保存路径和压缩后的ZIP文件名。然后通过遍历待导出的数据,将每个数据添加到新建的Word文档中,并保存为单独的Word文件,在保存Word文件后,将每个Word文件通过ZipOutputStream类压缩到ZIP文件中。遍历结束后,关闭ZipOutputStream流,导出和压缩过程完成。 ### 回答3: Java可以通过Apache POI库来实现将数据导出为Word文档的功能,Apache POI库提供了一些API,可以很方便地创建并编辑Word文档。对于将多个Word文档压缩成一个Zip文件的需求,Java可以使用ZipOutputStream类来实现,ZipOutputStream类能够很方便地对多个文件进行压缩处理。以下是大致的实现步骤: 1. 使用POI库创建并编辑Word文档,将数据写入到文档中。 2. 每次写完一条数据后就将该文档保存到本地,可以使用doc或docx格式,以便后续进行压缩。 3. 将所有生成的Word文档文件名存储到一个List中。 4. 使用ZipOutputStream类创建一个Zip压缩包文件,即ZipOutputStream将数据写入到.zip文件中。 5. 遍历保存Word文档文件名的List,并逐个将文件压缩到ZipOutputStream中。 6. 关闭ZipOutputStream和每个Word文档的输入流。 代码示例: ```java // 创建一个Zip文件输出流 ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("output.zip")); // 设置压缩方法 zipOut.setMethod(ZipOutputStream.DEFLATED); // 遍历Word文档文件名的List for (String fileName : fileNames) { // 将Word文档文件读入 FileInputStream fis = new FileInputStream(new File(fileName)); // 将读入的Word文档压缩到ZipOutputStream中 zipOut.putNextEntry(new ZipEntry(new File(fileName).getName())); // 读入数据到缓冲区 byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) != -1) { zipOut.write(buffer, 0, len); } // 关闭输入流 fis.close(); // 关闭该Entry zipOut.closeEntry(); } // 关闭ZipOutputStream zipOut.close(); ``` 这样,所有的Word文档都被压缩成了一个Zip文件,每个Word文档都形成了一个单独的Entry,并可以使用任何Zip文件处理工具进行解压。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值