• 压缩流


    ZIP是一种较为常见的压缩形式,在Java中要实现ZIP的压缩需要导入java.util.zip包,可以使用此包中的ZipFile、ZipOutputStream、ZipInputStream和ZipEntry几个类完成操作。

    <1>ZipFile类

    压缩一个文件

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    //=================================================
    // File Name       :	ZipOutputStream_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    
    //主类
    //Function        : 	ZipOutputStream_demo;
    public class ZipOutputStream_demo {
    
    	public static void main(String[] args) throws Exception{
    		// TODO 自动生成的方法存根
    		File file = new File("/home/common/software/coding/HelloWord/HelloWord/order.txt");//路径
    		File zipfile = new File("/home/common/software/coding/HelloWord/HelloWord/order.zip");//路径
    		
    		InputStream input = new FileInputStream(file);		//定义输入文件流
    		ZipOutputStream zipout = null;									//定义压缩输出流
    		//实例化压缩输出流对象,并指定压缩文件的输出路径
    		zipout = new ZipOutputStream(new FileOutputStream(zipfile));
    		//每一个被压缩的文件都用ZipEntry表示,需要为每一个压缩后的文件设置名称
    		zipout.putNextEntry(new ZipEntry(file.getName()));		//创建ZipEntry
    		zipout.setComment("这是压缩后的文件");						//设置注释
    		int temp = 0;																		//接收输入的数据
    		while((temp = input.read()) != -1){									//读取内容,采用了边读边写的方式
    			zipout.write(temp);															//压缩输出内容
    		}
    		input.close();
    		zipout.close();
    	}
    
    }
    

    压缩一个文件夹

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    //=================================================
    // File Name       :	ZipOutputStream_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    
    //主类
    //Function        : 	ZipOutputStream_demo;
    public class ZipOutputStream_demo {
    
    	public static void main(String[] args) throws Exception{
    		// TODO 自动生成的方法存根
    //		File file = new File("/home/common/software/coding/HelloWord/HelloWord/order.txt");//路径
    //		File zipfile = new File("/home/common/software/coding/HelloWord/HelloWord/order.zip");//路径
    //		
    //		InputStream input = new FileInputStream(file);		//定义输入文件流
    //		ZipOutputStream zipout = null;									//定义压缩输出流
    //		//实例化压缩输出流对象,并指定压缩文件的输出路径
    //		zipout = new ZipOutputStream(new FileOutputStream(zipfile));
    //		//每一个被压缩的文件都用ZipEntry表示,需要为每一个压缩后的文件设置名称
    //		zipout.putNextEntry(new ZipEntry(file.getName()));		//创建ZipEntry
    //		zipout.setComment("这是压缩后的文件");						//设置注释
    //		int temp = 0;																		//接收输入的数据
    //		while((temp = input.read()) != -1){									//读取内容,采用了边读边写的方式
    //			zipout.write(temp);															//压缩输出内容
    //		}
    //		input.close();
    //		zipout.close();
    		
    		File file = new File("/home/common/software/coding/HelloWord/HelloWord/test");//路径
    		File zipfile = new File("/home/common/software/coding/HelloWord/HelloWord/order.zip");//路径
    		
    		InputStream input = null;		//定义输入文件流
    		ZipOutputStream zipout = null;									//定义压缩输出流
    		//实例化压缩输出流对象,并指定压缩文件的输出路径
    		zipout = new ZipOutputStream(new FileOutputStream(zipfile));
    		zipout.setComment("这是压缩后的文件");						//设置注释
    		if(file.isDirectory()){						//判断是否是目录
    			File lists[] = file.listFiles();			//列出全部文件
    			for(int i=0;i<lists.length;i++){
    				input = new FileInputStream(lists[i]);		//设置文件输入流
    				//每一个被压缩的文件都用ZipEntry表示,需要为每一个压缩后的文件设置名称
    				zipout.putNextEntry(new ZipEntry(file.getName()+File.separator+lists[i].getName()));		//创建ZipEntry
    				int temp = 0;
    				while((temp = input.read()) != -1){
    					zipout.write(temp);
    				}
    				input.close();
    			}
    		}
    		zipout.close();
    	}
    
    }
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    
    //=================================================
    // File Name       :	ZipFile_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    
    //主类
    //Function        : 	ZipFile_demo;
    public class ZipFile_demo {
    
    	public static void main(String[] args)  throws Exception{
    		// TODO 自动生成的方法存根
    		File file = new File("/home/common/software/coding/HelloWord/HelloWord/b.zip");//路径
    		File outputfile = new File("/home/common/software/coding/HelloWord/HelloWord/b1.txt");//解压缩文件名称
    		
    		ZipFile zipfile = new ZipFile(file);											//实例化ZipFile对象
    //		System.out.println("压缩文件的名称:"+zipfile.getName());	//得到压缩文件的名称
    		ZipEntry entry = zipfile.getEntry("b2.txt");						//得到一个压缩实体
    		InputStream input = zipfile.getInputStream(entry);			//取得ZipEntry输入流
    		OutputStream out = new FileOutputStream(outputfile);			//取得ZipEntry输入流
    		
    		int temp = 0;				//保存接收数据
    		while((temp = input.read()) != -1){
    			out.write(temp);
    		}
    		input.close();
    		out.close();
    	}
    
    }
    

    <2>ZipInputStream类

    ZipInputStream是InputStream的子类,通过此类可以方便地读取ZIP格式的压缩文件

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipException;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipInputStream;
    
    //=================================================
    // File Name       :	ZipInputStream_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    
    
    //主类
    //Function        : 	ZipInputStream_demo;
    public class ZipInputStream_demo {
    
    	public static void main(String[] args) throws Exception {
    		// TODO 自动生成的方法存根
    		File file = new File("/home/common/software/coding/HelloWord/HelloWord/HelloWord.zip");//路径
    		File outfile = null;				//定义输出的文件对象
    		ZipFile zipfile = new ZipFile(file);	//实例化ZipFile对象
    		ZipInputStream zipinput = new ZipInputStream(new FileInputStream(file)); 	//实例化ZIP输入流
    		ZipEntry entry = null;						//定义一个ZipEntry对象,用于接收压缩文件中的每一个实体
    		InputStream input = null;				//定义输入流,用于读取每一个ZipEntry
    		OutputStream out = null;					//定义输出流,用于输出每一个实体内容
    		while((entry = zipinput.getNextEntry()) != null){		//得到每一个ZipEntry
    			System.out.println("解压缩"+entry.getName()+"文件");
    			outfile = new File("/home/common/software/coding/HelloWord/HelloWord"+entry.getName());
    			if(!outfile.getParentFile().exists()){		//判断文件夹是否存在
    				outfile.getParentFile().mkdirs();
    			}
    			if(!outfile.exists()){				//判断文件是否存在
    				outfile.createNewFile();
    			}
    			input = zipfile.getInputStream(entry);		//得到压缩实体的输入流
    			out = new FileOutputStream(outfile);		//实例化输入流对象
    			int temp = 0;
    			while((temp = input.read()) != -1){
    				out.write(temp);
    			}
    			input.close();
    			out.close();
    		}
    	}
    
    }
    
  • 相关阅读:
    替身邮:同一个邮箱多个名字
    CAGD: 第九章 几何连续性1
    Windows 2008 server 安装 Windows Live Essential 2011 的问题
    设计、仿真、工艺、加工、优化、开发交流QQ群 106930856 行业软件、二次开发、优化技术
    著佐权(Copyleft)
    Proe 二次开发:Session(会话) 对象
    CAGD: 第八章 曲线的几何处理技术
    UG/NX FEA 网格
    CAGD第十二章B样条曲面2
    推荐网络硬盘:金山快盘 15G
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5279717.html
Copyright © 2020-2023  润新知