zoukankan      html  css  js  c++  java
  • 文件压缩

    文件的压缩
        Java I/O类库中的类支持读写压缩格式的数据流。可以用它们对其他的I/O类进行封装,以提供压缩功能。
        这些类不是从Reader和Writer类派生而来的,而是属于InputStream和OutputStream继承层次结构的一部分,这样做是因为压缩类库是按字节的方式而不是按字符的方式处理的。

    package solutions;
    
    import java.io.*;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    
    /**
     * Created by Administrator on 2016/3/14.
     */
    public class GZIPcompress {
        public static void main(String[] args) throws IOException{
            if(args.length==0){
                System.out.println("Usage: 
    GZIPcompress file
    " +
                        "	Uses GZIP compression to compress " +
                        " the file to test.gz");
                System.exit(1);
            }
            BufferedReader in=new BufferedReader(new FileReader(args[0]));
            BufferedOutputStream out=new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream("test.gz")));
            System.out.println("writing file");
            int c;
            while ((c=in.read())!=-1)
                out.write(c);
            in.close();
            out.close();
            System.out.println("reading file");
            BufferedReader in2=new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("test.gz"))));
            String s;
            while ((s=in2.readLine())!=null)
                System.out.println(s);
        }
    }

     用Zip进行多文件的保存
         支持Zip格式的Java库更加全面,利用该库可以方便地保存多个文件,它甚至有一个独立的类,使得读取Zip文件更加方便

    package solutions;
    
    import java.io.*;
    import java.util.zip.*;
    
    /**
     * Created by Administrator on 2016/3/14.
     */
    public class ZipCompress
    {
        public static void main(String[] args) throws IOException{
            //1.写文件(压缩文件)
            FileOutputStream f=new FileOutputStream("test.zip");
            /*
            *
            * */
            CheckedOutputStream csum=new CheckedOutputStream(f,new Adler32());
            ZipOutputStream zos=new ZipOutputStream(csum);
            BufferedOutputStream out=new BufferedOutputStream(zos);
            zos.setComment("A test of Java Zipping");
            for(String arg:args){
                System.out.print("writing file"+arg);
                BufferedReader in=new BufferedReader(new FileReader(arg));
                zos.putNextEntry(new ZipEntry(arg));
                int c;
                while ((c=in.read())!=-1)
                    out.write(c);
                in.close();
                out.flush();
            }
            out.close();
            //2.读文件(解压文件)
            FileInputStream fi=new FileInputStream("tets.zip");
            CheckedInputStream csumi=new CheckedInputStream(fi,new Adler32());
            ZipInputStream in2=new ZipInputStream(csumi);
            BufferedInputStream bis=new BufferedInputStream(in2);
            ZipEntry ze;
            while ((ze=in2.getNextEntry())!=null){
                int x;
                while ((x=bis.read())!=-1){
                    System.out.write(x);
                }
                bis.close();
            }
        }
    }
  • 相关阅读:
    叨叨叨
    四舍五入VS银行家舍入
    是雏还是鹰——编程规范之变量命名
    .Net下二进制形式的文件(图片)的存储与读取(原创)
    asp.net中<%%>形式的用法(原创)
    让Hashtable支持自定义排序(原创)
    .NET下的迭代器(Iterator)模式
    本地视频播放-ios
    cocos2dx srand(time(NULL))重新设置一个随机种子
    cocos2dx 游戏重置方法
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5276789.html
Copyright © 2011-2022 走看看