欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java GZIPOutputStream流壓縮文件的操作

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

我就廢話(huà)不多說(shuō)了,大家還是直接看代碼吧~

不多說(shuō),直接上代碼

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文件寫(xiě)入zipFile,其中ZipEntry中放入的源文件的當(dāng)前名稱(chēng),putNextEntry是將源文件的當(dāng)前名稱(chēng)定位到條目數(shù)據(jù)的開(kāi)始處。

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

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

ZipOutputStream類(lèi)的常用方法

ZipInputStream類(lèi)的常用方法

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

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

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

注意:

1、壓縮文件中的每一個(gè)壓縮實(shí)體都使用ZipEntry保存,一個(gè)壓縮文件中可能包含一個(gè)或多個(gè)ZipEntry對(duì)象。

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

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

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

壓縮文件

import java.io.*;
import java.util.zip.*; 
public class MyZip { // 創(chuàng)建類(lèi)
 private void zip(String zipFileName, File inputFile) throws Exception {
 ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
  zipFileName)); // 創(chuàng)建ZipOutputStream類(lèi)對(duì)象
 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()) { // 測(cè)試此抽象路徑名表示的文件是否是一個(gè)目錄
  File[] fl = f.listFiles(); // 獲取路徑數(shù)組
  out.putNextEntry(new ZipEntry(base + "/")); // 寫(xiě)入此目錄的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)入點(diǎn)
  // 創(chuàng)建FileInputStream對(duì)象
  FileInputStream in = new FileInputStream(f);
  int b; // 定義int型變量
  System.out.println(base);
  while ((b = in.read()) != -1) { // 如果沒(méi)有到達(dá)流的尾部
  out.write(b); // 將字節(jié)寫(xiě)入當(dāng)前ZIP條目
  }
  in.close(); // 關(guān)閉流
 }
 }
 
 public static void main(String[] temp) { // 主方法
 MyZip book = new MyZip(); // 創(chuàng)建本例對(duì)象
 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對(duì)象
 try { // try語(yǔ)句捕獲可能發(fā)生的異常
  zin = new ZipInputStream(new FileInputStream("hello.zip"));
  // 實(shí)例化對(duì)象,指明要進(jìn)行解壓的文件
  ZipEntry entry = zin.getNextEntry(); // 獲取下一個(gè)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();
 }
 }
}

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

相關(guān)文章

  • Java SMM框架關(guān)聯(lián)關(guān)系映射示例講解

    Java SMM框架關(guān)聯(lián)關(guān)系映射示例講解

    SSM框架是spring MVC ,spring和mybatis框架的整合,是標(biāo)準(zhǔn)的MVC模式,將整個(gè)系統(tǒng)劃分為表現(xiàn)層,controller層,service層,DAO層四層,使用spring MVC負(fù)責(zé)請(qǐng)求的轉(zhuǎn)發(fā)和視圖管理,spring實(shí)現(xiàn)業(yè)務(wù)對(duì)象管理,mybatis作為數(shù)據(jù)對(duì)象的持久化引擎
    2022-08-08
  • 配置tjxCold(idea效率插件)的模版教程詳解

    配置tjxCold(idea效率插件)的模版教程詳解

    這篇文章主要介紹了配置tjxCold(idea效率插件)的模版教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • SpringBoot內(nèi)部調(diào)用事務(wù)不起作用問(wèn)題的解決方案

    SpringBoot內(nèi)部調(diào)用事務(wù)不起作用問(wèn)題的解決方案

    這篇文章主要介紹了SpringBoot事務(wù)不起作用問(wèn)題的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java 如何安全的發(fā)布對(duì)象

    Java 如何安全的發(fā)布對(duì)象

    這篇文章主要介紹了Java 如何安全的發(fā)布對(duì)象,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • 淺析Java中Apache BeanUtils和Spring BeanUtils的用法

    淺析Java中Apache BeanUtils和Spring BeanUtils的用法

    這篇文章主要介紹了Java中Apache BeanUtils和Spring BeanUtils的用法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 關(guān)于springboot-starter-undertow和tomcat的區(qū)別說(shuō)明

    關(guān)于springboot-starter-undertow和tomcat的區(qū)別說(shuō)明

    這篇文章主要介紹了關(guān)于springboot-starter-undertow和tomcat的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 模擬打印機(jī)排隊(duì)打印效果

    模擬打印機(jī)排隊(duì)打印效果

    本節(jié)主要介紹了模擬打印機(jī)排隊(duì)打印效果的具體實(shí)現(xiàn),感興趣的朋友可以參考下
    2014-07-07
  • Jedis對(duì)redis的五大類(lèi)型操作代碼詳解

    Jedis對(duì)redis的五大類(lèi)型操作代碼詳解

    這篇文章主要介紹了Jedis對(duì)redis的五大操作代碼詳解,分別是字符串、列表、散列、集合、有序集合,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 帶你粗略了解Java數(shù)組的使用

    帶你粗略了解Java數(shù)組的使用

    這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的定義和使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • JAVA一個(gè)快速排序?qū)崿F(xiàn)代碼

    JAVA一個(gè)快速排序?qū)崿F(xiàn)代碼

    排序有哪幾種方法?請(qǐng)列舉。并用JAVA實(shí)現(xiàn)一個(gè)快速排序.,需要的朋友可以參考下
    2017-02-02

最新評(píng)論