有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Java将ZipoutStream存储到zip文件

我必须在内存中创建ZIP存档 但现在,我需要把它保存在一个真实的世界里。磁盘中的zip文件。怎么做? 伪代码:

public byte[] crtZipByteArray(ByteArrayInputStream data,ZipEntry entry) throws IOException{
     ByteArrayOutputStream zipout = new ByteArrayOutputStream(); 
    ZipOutputStream zos = new ZipOutputStream(zipout);
    byte[] buffer = new byte[1024];
    int len;
    zos.putNextEntry(entry);
    while ((len = data.read(buffer)) > 0) {
        zos.write(buffer, 0, len);
    }
    zos.closeEntry();

    zos.close();
    data.close();
    return zipout.toByteArray();
}

共 (1) 个答案

  1. # 1 楼答案

    ByteArrayOutputStream zipout替换为FileOutputStream zipout

    如果需要将字节数组作为方法结果返回,请使用ApacheCommonsTeeOutputStream为两个流复制输出

    public byte[] crtZipByteArray(ByteArrayInputStream data,ZipEntry entry) throws IOException{
            ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); 
            OutputStream fileOut = new FileOutputStream("filename.zip");
            OutputStream teeOut = new TeeOutputStream(byteArrayOut, fileOut);
            ZipOutputStream zos = new ZipOutputStream(teeOut);
    .....
    }