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