如何在java中读写zip文件?

时间:2010-11-10 16:02:47

标签: java

我正在练习了解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文件并将其写在不同的位置。

任何建议!!

2 个答案:

答案 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();