<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java `ZipInputStream`教程 原文:http://zetcode.com/java/zipinputstream/ Java `ZipInputStream`教程顯示了如何使用`ZipInputStream`讀取 Java 中的 ZIP 文件。 ## Java `ZipInputStream` `ZipInputStream`是 Java 類,實現用于讀取 ZIP 文件格式的文件的輸入流過濾器。 它支持壓縮和未壓縮的條目。 ## ZIP ZIP 是一種存檔文件格式,支持無損數據壓縮。 一個 ZIP 文件可能包含一個或多個已壓縮的文件或目錄。 Java Archive(JAR)建立在 ZIP 格式上。 ## `ZipInputStream`構造器 `ZipInputStream`具有以下構造器: ```java ZipInputStream(InputStream in) ZipInputStream(InputStream in, Charset charset) ``` ## `ZipInputStream getNextEntry` `ZipInputStream`的`getNextEntry()`讀取下一個 ZIP 文件條目,并將流定位在條目數據的開頭。 ## Java 讀取 ZIP 示例 下面的示例讀取一個 ZIP 文件的內容。 `JavaReadZip.java` ```java package com.zetcode; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.time.LocalDate; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class JavaReadZip { private final static Long MILLS_IN_DAY = 86400000L; public static void main(String[] args) throws IOException { String fileName = "src/resources/myfile.zip"; try (FileInputStream fis = new FileInputStream(fileName); BufferedInputStream bis = new BufferedInputStream(fis); ZipInputStream zis = new ZipInputStream(bis)) { ZipEntry ze; while ((ze = zis.getNextEntry()) != null) { System.out.format("File: %s Size: %d Last Modified %s %n", ze.getName(), ze.getSize(), LocalDate.ofEpochDay(ze.getTime() / MILLS_IN_DAY)); } } } } ``` 該示例使用`ZipInputStream`讀取給定的 ZIP 文件,并將其內容打印到終端。 我們打印文件名,文件大小和最后修改時間。 ```java String fileName = "src/resources/myfile.zip"; ``` ZIP 文件位于`src/resources/`目錄中。 ```java try (FileInputStream fis = new FileInputStream(fileName); ``` 我們從文件創建一個`FileInputStream`。 `FileInputStream`用于讀取原始字節流。 ```java BufferedInputStream bis = new BufferedInputStream(fis); ``` 為了獲得更好的性能,我們將`FileInputStream`傳遞到`BufferedInputStream`中。 ```java ZipInputStream zis = new ZipInputStream(bis)) { ``` `ZipInputStream`是從緩沖的`FileInputStream`創建的。 當資源不再需要時,`try-with-resources`將關閉流。 ```java while ((ze = zis.getNextEntry()) != null) { ``` 在`while`循環中,我們使用`getNextEntry()`方法瀏覽 ZIP 文件的條目。 如果沒有更多條目,則返回`null`。 ```java System.out.format("File: %s Size: %d Last Modified %s %n", ze.getName(), ze.getSize(), LocalDate.ofEpochDay(ze.getTime() / MILLS_IN_DAY)); ``` `getName()`返回條目的名稱,`getSize()`返回條目的未壓縮大小,`getTime()`返回條目的最后修改時間。 ```java File: maven.pdf Size: 6430817 Last Modified 2017-02-23 File: mavenbyexample.pdf Size: 1363061 Last Modified 2017-02-15 File: modal_verbs.jpg Size: 31353 Last Modified 2017-03-04 File: sid.jpg Size: 57708 Last Modified 2017-06-05 File: spring-boot-reference.pdf Size: 1946586 Last Modified 2017-06-05 ``` 這是一個示例輸出。 ## Java 解壓縮 ZIP 示例 在下一個示例中,我們用 Java 解壓縮 ZIP 文件。 `JavaUnzip.java` ```java package com.zetcode; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.file.Path; import java.nio.file.Paths; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class JavaUnzip { public static void main(String args[]) throws Exception { byte[] buffer = new byte[2048]; Path outDir = Paths.get("src/resources/output/"); String zipFileName = "src/resources/myfile.zip"; try (FileInputStream fis = new FileInputStream(zipFileName); BufferedInputStream bis = new BufferedInputStream(fis); ZipInputStream stream = new ZipInputStream(bis)) { ZipEntry entry; while ((entry = stream.getNextEntry()) != null) { Path filePath = outDir.resolve(entry.getName()); try (FileOutputStream fos = new FileOutputStream(filePath.toFile()); BufferedOutputStream bos = new BufferedOutputStream(fos, buffer.length)) { int len; while ((len = stream.read(buffer)) > 0) { bos.write(buffer, 0, len); } } } } } } ``` 該示例使用`ZipInputStream`讀取給定 ZIP 文件的內容,并使用`FileOutputStream`和`BufferedOutputStream`將該內容寫入目錄。 ```java Path outDir = Paths.get("src/resources/output/"); ``` 這是我們提取 ZIP 文件內容的目錄。 ```java while ((entry = stream.getNextEntry()) != null) { ``` 在第一個`while`循環中,我們瀏覽 ZIP 文件的條目。 ```java while ((len = stream.read(buffer)) > 0) { bos.write(buffer, 0, len); } ``` 在第二個`while`循環中,我們讀取條目并將其寫入輸出流。 在本教程中,我們介紹了 Java `ZipInputStream`類。 我們創建了兩個示例來讀取 ZIP 文件和解壓縮 ZIP 文件。 您可能也對相關教程感興趣:[Java 讀取文本文件](/articles/javareadtext/), [Java `HashMap`教程](/java/hashmap/), [Java `ArrayList`教程](/articles/javaarraylist/), [Java `static`關鍵字](/java/statickeyword/), [Java 中的`HashMap`迭代](/java/hashmapiterate/), [Java8 `forEach`教程](/articles/java8foreach/),[用 Java 讀寫 ICO 圖像](/articles/javaico/), [Java 教程](/lang/java/), [用 Java 顯示圖像](/java/displayimage/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看