我正在练习了解java中的读写zip文件。我读过有关读取文件并将其设为zip文件的内容,我也试过了。我读过有关使用java读取zip文件的内容。如何将这种读写操作结合在一起。比如,我想读取硬盘中的压缩文件,我想将其保存在另一个位置。
我可以使用以下代码阅读zip文件:
FileInputStream fs = new FileInputStream("C:/Documents and Settings/tamilvendhank/Desktop/abc.zip");
ZipInputStream zis = new ZipInputStream(fs);
ZipEntry zE;
while((zE=zis.getNextEntry())!=null){
System.out.println(ze.getName());
zis.closeEntry();
}
zis.close();
而且,我还可以使用此代码制作一个文本文件:
String fn = "C:/Documents and Settings/tamilvendhank/Desktop/New Text Document.txt";
byte[] b = new byte[1024];
FileInputStream fis = new FileInputStream(fn);
fis.read(b, 0, b.length);
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("C:/Documents and Settings/tamilvendhank/Desktop/123.zip"));
ZipEntry ze = new ZipEntry(fn);
ze.setSize((long)b.length);
zos.setLevel(6);
zos.putNextEntry(ze);
zos.write(b, 0, b.length);
zos.finish();
zos.close();
现在我将如何连接上述两个代码并使代码读取一个zip文件并将其写在不同的位置。
任何建议!!
答案 0 :(得分:4)
为什么不将它作为FileInputStream打开并将内容转储到FileOutputStream中。这是执行简单复制操作的方式,您不必解压缩文件,然后将其压缩回HDD上的其他位置。
答案 1 :(得分:3)
您的问题似乎更多的是如何连接输入流和输出流,从一个读取和从另一个写入。
答案是使用while循环从输入读取块并将它们写入输出。像这样的东西;
byte[] data = new byte[2048];
int b = -1;
while ((b = is.read(data)) != -1)
{
fos.write(data, 0, b);
}
is.close();
fos.close();