如何用JAVA把内存里的二进制文件打包成ZIP包

内存里面有多个文件 有文件名和二进制内容,如何把这些文件一起打成一个ZIP包。并写到指定的位置。
[b]问题补充:[/b]
pan_java 写的我看过,没问题
但我想要的是把内存里的多个二进制文件打成一个ZIP包。
谢谢

4个回答

[code="java"]import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

class ZipTest {
// 压缩
public static void zip(String zipFileName, String inputFile)
throws Exception {
File f = new File(inputFile);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName));
zip(out, f, f.getName());
System.out.println("zip done");
out.close();
}

private static void zip(ZipOutputStream out, File f, String base)
        throws Exception {
    out.putNextEntry(new ZipEntry(base));
    FileInputStream in = new FileInputStream(f);
    int b;
    while ((b = in.read()) != -1)
        out.write(b);
    in.close();
}

public static void main(String[] args) {
    try {
        ZipTest t = new ZipTest();
        t.zip("c:\\test.zip", "c:\\1.txt");
    } catch (Exception e) {
        e.printStackTrace(System.out);
    }

}

}[/code]

将c:\1.txt 打包成 c:\test.zip

应该不是很难,估计得用到IO和java.util.zip包下的类。

while ((b = in.read()) != -1)

out.write(b);

这里不是在写二进制文件吗?变通一下吗

内存里的文件跟磁盘上的文件没啥区别,无非就是将代码中的FileInputStream换成byte数组即可。至于多个文件,应该相应的多加几个ZipEntry就可以吧。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问