Java 读写GZIP格式文件

本文介绍了一个使用 Java 实现的 GZIP 文件压缩和解压程序。该程序通过 GZIPOutputStream 和 GZIPInputStream 对文件进行压缩与解压处理,并展示了如何在 Java 中读写字节流来完成这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.zip.GZIPInputStream; 
import java.util.zip.GZIPOutputStream; 
   
public class GZipFileTest { 
       
    private static final int BUFFER_SIZE = 1024
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
   
        File inputFile = new File("D:/test/input.txt"); 
           
        File outputFile = new File("D:/test/test.dat"); 
           
        writeGZip(inputFile,outputFile); 
           
        readGZip(outputFile); 
    
   
    public static void readGZip(File file) { 
           
        GZIPInputStream gzipInputStream = null
        ByteArrayOutputStream baos = null
        try 
            gzipInputStream = new GZIPInputStream(new FileInputStream(file)); 
               
            baos = new ByteArrayOutputStream(); 
               
            byte[] buf = new byte[BUFFER_SIZE]; 
            int len = 0
            while((len=gzipInputStream.read(buf, 0, BUFFER_SIZE))!=-1){ 
                baos.write(buf, 0, len); 
            
               
            baos.toByteArray(); 
               
            String result = baos.toString("UTF-8"); 
               
            System.out.println("result="+result); 
               
        catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        catch (IOException e) { 
            e.printStackTrace(); 
        }finally
            if(gzipInputStream!=null){ 
                try 
                    gzipInputStream.close(); 
                catch (IOException e) { 
                    e.printStackTrace(); 
                
            
            if(baos!=null){ 
                try 
                    baos.close(); 
                catch (IOException e) { 
                    e.printStackTrace(); 
                
            
        
    
       
    public static void writeGZip(File inputFile, File outputFile) { 
           
        GZIPOutputStream gzipOutputStream = null
        InputStream in = null
        try 
            gzipOutputStream = new GZIPOutputStream(new FileOutputStream(outputFile)); 
               
            in = new FileInputStream(inputFile); 
               
            byte[] buffer = new byte[BUFFER_SIZE]; 
   
            int len = 0
            while ((len = in.read(buffer,0,BUFFER_SIZE)) > 0) { 
                gzipOutputStream.write(buffer, 0, len); 
            
            gzipOutputStream.finish(); 
               
        catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        catch (IOException e) { 
            e.printStackTrace(); 
        }finally
            if(gzipOutputStream!=null){ 
                try 
                    gzipOutputStream.close(); 
                catch (IOException e) { 
                    e.printStackTrace(); 
                
            
            if(in!=null){ 
                try 
                    in.close(); 
                catch (IOException e) { 
                    e.printStackTrace(); 
                
            
        
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值