美文网首页
Java文件压缩

Java文件压缩

作者: 业余的猫 | 来源:发表于2017-04-12 16:44 被阅读0次

从接触计算机开始,便知道了压缩文件的存在,刚开始不解(本来我一次就可以打开文件,现在却多了一步,乃是解压。。。)到了后来,我才慢慢明白压缩的重要性,除了节省空间,还节省了时间。有时候压缩文件的结果会让你吃惊,大概在原文件的50%左右,这样在网络端传输的时间将缩短一半。由此可见,它是有多么的重要。

单个文件压缩

首选GZIP

public static void compress(File source, File gzip) {
    if(source == null || gzip == null) 
        throw new NullPointerException();
    BufferedReader reader = null;
    BufferedOutputStream bos = null;
    try {
        //读取文本文件可以字符流读取
        reader = new BufferedReader(new FileReader(source));
        //对于GZIP输出流,只能使用字节流
        bos = new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(gzip)));
        String data;
        while((data = reader.readLine()) != null) {
            bos.write(data.getBytes());
        }
    }  catch (IOException e) {
        throw new RuntimeException(e);
    }  finally {
        try {
            if(reader != null)
                reader.close();
            if(bos != null) 
                bos.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        
    }
}

多文件压缩

public static void compressMore(File[] files, File outFile) {
    if(files == null || outFile == null) 
        throw new NullPointerException();
    ZipOutputStream zipStream = null;
    try {
        //用校验流确保输出数据的完整性
        CheckedOutputStream cos = new CheckedOutputStream(new FileOutputStream(outFile), new Adler32());
        //用缓冲字节输出流进行包装
        zipStream = new ZipOutputStream(new BufferedOutputStream(cos));
        for (File file : files) {
            if(file != null) {
                BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
                try {
                    //添加实体到流中,实际上只需要指定文件名称
                    zipStream.putNextEntry(new ZipEntry(file.getName()));
                    int c;
                    while((c = in.read()) != -1)
                        zipStream.write(c);
                } catch (IOException e) {
                    throw new RuntimeException(e);
                } finally {
                    in.close();
                }   
            }
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    } finally {
        try{
            if(zipStream != null)
                zipStream.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

相关文章

  • Proguard首次学习

    参考 简介 可以对java类文件(不只是java语言生成的java类文件奥),进行压缩,优化,混淆,预校验。 压缩...

  • [java压缩与解压]

    java压缩与解压 一 概述 1.目录进入点 目录进入点是文件在压缩文件中的映射,代表压缩文件。压缩文件时,创建目...

  • 安装配置JDK

    安装 在/opt目录下新建java文件夹 将下载的压缩包拷贝到java文件夹中 进入java目录,解压压缩包 配置...

  • java文件压缩

    先不要说什么。上代码。 压缩单个文件 看完看下面的: 压缩目录下的所有文件 温馨提醒:看不清楚的可以右键保存到本地...

  • Java文件压缩

    从接触计算机开始,便知道了压缩文件的存在,刚开始不解(本来我一次就可以打开文件,现在却多了一步,乃是解压。。。)到...

  • jar压缩文件是什么以及如何使用?

    jar是什么? jar格式文件是sun公司特为Java文件(含Java和class文件)定义的一种文件压缩格式,俗...

  • Linux配置JDK

    下载jdk压缩包,放到opt目录下的java目录中 解压缩刚才下载的jdk文件(解压到/opt/java中)。此时...

  • Java多文件压缩

    public static void main(String[] args) {//文件夹File file = ...

  • java压缩文件

    关于java压缩文件的一些问题 这段时间涉及到一个将不同目录下的file文件压缩到一个zip文件中,同时要保留原来...

  • java使用gzip实现文件解压缩示例

    java使用gzip实现文件解压缩示例 JAVA工程师介绍,代码如下: package com.cjonline....

网友评论

      本文标题:Java文件压缩

      本文链接:https://www.haomeiwen.com/subject/scpmattx.html