最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java GZIPOutputStream流壓縮文件的操作

 更新時間:2021年02月08日 14:32:17   作者:3075763007  
這篇文章主要介紹了Java GZIPOutputStream流壓縮文件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

不多說,直接上代碼

public static void main(String[] args) throws Exception{
    
    //壓縮文件
    File src = new File("e:/xx/aa.txt");
    File zipFile = new File("e:/xx/a.zip");
    FileOutputStream fos = new FileOutputStream(zipFile);
    ZipOutputStream zos = new ZipOutputStream(fos);
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
    ZipEntry entry = new ZipEntry( src.getName());
    zos.putNextEntry(entry);
    int count;
    byte[] buf = new byte[1024];
    while ((count = bis.read(buf)) != -1) {
      zos.write(buf, 0, count);
    }
    bis.close();
    //fos.close();
    zos.close();//
    }

壓縮的步驟是:

src將要壓縮的文件,zipFile 壓縮后的文件,壓縮流套接zipFile,然后將src文件寫入zipFile,其中ZipEntry中放入的源文件的當(dāng)前名稱,putNextEntry是將源文件的當(dāng)前名稱定位到條目數(shù)據(jù)的開始處。

補(bǔ)充:Java ZIP壓縮輸入輸出流

ZIP是一種較為常見的壓縮形式,在Java中要想實現(xiàn)ZIP的壓縮需要導(dǎo)入java.util.zip包,可以使用此包中的ZipFile、ZipOutputStream、ZipInputStream、ZipEntry幾個類完成。

ZipOutputStream類的常用方法

ZipInputStream類的常用方法

在JAVA IO中,不僅可以實現(xiàn)ZIP壓縮格式的輸入、輸出,也可以實現(xiàn)JAR及GZIP文件格式的壓縮:

1、JAR壓縮的支持類保存在java.util.jar包中,常用的類有 JarOutputStream(JAR壓縮輸出流)、JarInputStream(JAR壓縮輸入流)、JARFile(JAR文件)、JAREntry(JAR實體)

2、GZIP是用于UNIX系統(tǒng)的文件壓縮,在Linux中經(jīng)常會使用到*.gz的文件,就是GZIP格式,GZIP壓縮的支持類保存在java.util.zip包中,常用的類有 GZIPOutputStream(GZIP壓縮輸出流)、GZIPInputStream(GZIP壓縮輸入流)

注意:

1、壓縮文件中的每一個壓縮實體都使用ZipEntry保存,一個壓縮文件中可能包含一個或多個ZipEntry對象。

2、在JAVA中可以進(jìn)行zip、jar、gz三種格式的壓縮支持,操作流程基本上是一致的。

3、ZipOutputStream可以進(jìn)行壓縮的輸出,但是輸出的位置不一定是文件。

4、ZipFile表示每一個壓縮文件,可以得到每一個壓縮實體的輸入流。

壓縮文件

import java.io.*;
import java.util.zip.*; 
public class MyZip { // 創(chuàng)建類
 private void zip(String zipFileName, File inputFile) throws Exception {
 ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
  zipFileName)); // 創(chuàng)建ZipOutputStream類對象
 zip(out, inputFile, ""); // 調(diào)用方法
 System.out.println("壓縮中…"); // 輸出信息
 out.close(); // 將流關(guān)閉
 }
 
 private void zip(ZipOutputStream out, File f, String base)
  throws Exception { // 方法重載
 if (f.isDirectory()) { // 測試此抽象路徑名表示的文件是否是一個目錄
  File[] fl = f.listFiles(); // 獲取路徑數(shù)組
  out.putNextEntry(new ZipEntry(base + "/")); // 寫入此目錄的entry
  base = base.length() == 0 ? "" : base + "/"; // 判斷參數(shù)是否為空
  for (int i = 0; i < fl.length; i++) { // 循環(huán)遍歷數(shù)組中文件
  zip(out, fl[i], base + fl[i]);
  }
 } else {
  out.putNextEntry(new ZipEntry(base)); // 創(chuàng)建新的進(jìn)入點
  // 創(chuàng)建FileInputStream對象
  FileInputStream in = new FileInputStream(f);
  int b; // 定義int型變量
  System.out.println(base);
  while ((b = in.read()) != -1) { // 如果沒有到達(dá)流的尾部
  out.write(b); // 將字節(jié)寫入當(dāng)前ZIP條目
  }
  in.close(); // 關(guān)閉流
 }
 }
 
 public static void main(String[] temp) { // 主方法
 MyZip book = new MyZip(); // 創(chuàng)建本例對象
 try {
  // 調(diào)用方法,參數(shù)為壓縮后文件與要壓縮文件
  book.zip("hello.zip", new File("src"));
  System.out.println("壓縮完成"); // 輸出信息
 } catch (Exception ex) {
  ex.printStackTrace();
 }
 }
}

解壓文件

import java.io.*;
import java.util.zip.*;
 
public class Decompressing { // 創(chuàng)建文件
 public static void main(String[] temp) {
 ZipInputStream zin; // 創(chuàng)建ZipInputStream對象
 try { // try語句捕獲可能發(fā)生的異常
  zin = new ZipInputStream(new FileInputStream("hello.zip"));
  // 實例化對象,指明要進(jìn)行解壓的文件
  ZipEntry entry = zin.getNextEntry(); // 獲取下一個ZipEntry
  while (((entry = zin.getNextEntry()) != null)
   && !entry.isDirectory()) {
  // 如果entry不為空,并不在同一目錄下
  File file = new File("d:\\" + entry.getName()); // 獲取文件目錄
  System.out.println(file);
  if (!file.exists()) { // 如果該文件不存在
   file.mkdirs();// 創(chuàng)建文件所在文件夾
   file.createNewFile(); // 創(chuàng)建文件
  }
  zin.closeEntry(); // 關(guān)閉當(dāng)前entry
  System.out.println(entry.getName() + "解壓成功");
  }
  zin.close(); // 關(guān)閉流
 } catch (Exception e) {
  e.printStackTrace();
 }
 }
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • java接口性能從20s優(yōu)化到500ms示例詳解

    java接口性能從20s優(yōu)化到500ms示例詳解

    這篇文章主要為大家介紹了java接口性能從20s優(yōu)化到500ms的操作技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 改變JAVA窗體屬性的操作方法

    改變JAVA窗體屬性的操作方法

    在本篇內(nèi)容里小編給大家詳細(xì)分析了關(guān)于改變JAVA窗體屬性的操作方法和步驟,需要的朋友們學(xué)習(xí)下。
    2018-12-12
  • MyBatis-Plus中的邏輯刪除使用詳解

    MyBatis-Plus中的邏輯刪除使用詳解

    開發(fā)系統(tǒng)時,有時候在實現(xiàn)功能時,刪除操作需要實現(xiàn)邏輯刪除就是將數(shù)據(jù)標(biāo)記為刪除,而并非真的物理刪除(非DELETE操作),查詢時需要攜帶狀態(tài)條件,確保被標(biāo)記的數(shù)據(jù)不被查詢到。這樣做的目的就是避免數(shù)據(jù)被真正的刪除
    2022-12-12
  • SpringMvc web.xml配置實現(xiàn)原理過程解析

    SpringMvc web.xml配置實現(xiàn)原理過程解析

    這篇文章主要介紹了SpringMvc web.xml配置實現(xiàn)原理過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析

    Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析

    本文將探討如何在Java中有效地應(yīng)對這些挑戰(zhàn),介紹一種強(qiáng)大的工具并發(fā)Map,它能夠幫助您管理多線程環(huán)境下的共享數(shù)據(jù),確保數(shù)據(jù)的一致性和高性能,深入了解Java中的并發(fā)Map實現(xiàn),包括ConcurrentHashMap和ConcurrentSkipListMap,及相關(guān)知識點
    2023-09-09
  • IDEA查看Scala的源碼的教程圖解

    IDEA查看Scala的源碼的教程圖解

    這篇文章主要介紹了IDEA查看Scala的源碼的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java?guava框架LoadingCache及CacheBuilder本地小容量緩存框架總結(jié)

    Java?guava框架LoadingCache及CacheBuilder本地小容量緩存框架總結(jié)

    Guava?Cache本地緩存框架主要是一種將本地數(shù)據(jù)緩存到內(nèi)存中,但數(shù)據(jù)量并不能太大,否則將會占用過多的內(nèi)存,本文給大家介紹Java?guava框架?LoadingCache及CacheBuilder?本地小容量緩存框架總結(jié),感興趣的朋友一起看看吧
    2023-12-12
  • Java?OpenCV圖像處理之自定義圖像濾波算子

    Java?OpenCV圖像處理之自定義圖像濾波算子

    這篇文章主要為大家介紹了如何利用Java?OpenCV實現(xiàn)自定義圖像濾波(降噪)?算子,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-02-02
  • idea中定時及多數(shù)據(jù)源配置方法

    idea中定時及多數(shù)據(jù)源配置方法

    因項目要求,需要定時從達(dá)夢數(shù)據(jù)庫中取數(shù)據(jù),并插入或更新到ORACLE數(shù)據(jù)庫中,這篇文章主要介紹了idea中定時及多數(shù)據(jù)源配置方法,需要的朋友可以參考下
    2023-12-12
  • Java擴(kuò)展庫RxJava的基本結(jié)構(gòu)與適用場景小結(jié)

    Java擴(kuò)展庫RxJava的基本結(jié)構(gòu)與適用場景小結(jié)

    RxJava(GitHub: https://github.com/ReactiveX/RxJava)能夠幫助Java進(jìn)行異步與事務(wù)驅(qū)動的程序編寫,這里我們來作一個Java擴(kuò)展庫RxJava的基本結(jié)構(gòu)與適用場景小結(jié),剛接觸RxJava的同學(xué)不妨看一下^^
    2016-06-06

最新評論

阜新| 濉溪县| 新津县| 台安县| 岳阳县| 驻马店市| 怀宁县| 荆门市| 渭源县| 深泽县| 沈阳市| 宾川县| 汾阳市| 三都| 博白县| 衡山县| 越西县| 临城县| 星子县| 嘉鱼县| 望江县| 长春市| 中阳县| 三穗县| 旌德县| 平乐县| 抚州市| 基隆市| 吉林市| 浦江县| 四平市| 新余市| 长海县| 涿州市| 托克逊县| 临泽县| 和静县| 房产| 莱州市| 东丰县| 临海市|