繁体   English   中英

如何在Java中读写zip文件?

[英]How to read and write a zip file in java?

我正在做一个练习,以了解在Java中读写zip文件的方式。 我读过有关读取文件并将其制成zip文件的信息,并且我也尝试过。 我读过有关使用java读取zip文件的信息。 我如何将这些读写操作结合在一起。 就像,我想读取HDD中的压缩文件,然后将其保存在另一个位置。

我可以使用以下代码读取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文件并将其写入其他位置。

有什么建议么!!

为什么不将其作为FileInputStream打开并将其内容转储到FileOutputStream中。 这是执行简单复制操作的方式,您不必解压缩文件,然后将其压缩回HDD上的另一个位置。

您的问题似乎更多是关于如何连接一个输入流和一个输出流,从一个读取和另一个写入。

答案是使用while循环,该循环从输入读取块并将其写入输出。 像这样的东西;

byte[] data = new byte[2048];
int b = -1;
while ((b = is.read(data)) != -1)
{
   fos.write(data, 0, b);
}

is.close();
fos.close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM