簡體   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