zoukankan      html  css  js  c++  java
  • java 实现压缩单个文件

    先来实现一个简单的单文件压缩,主要是为了解一下压缩需要使用到的流。。

    效果:

    说明:压缩实现使用ZipOutputStream

    代码:

    package com.gx.compress;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
    * @ClassName: CompressUtil 
    * @Description: 压缩单个文件
    * @author zhoujie 
    * @date 2018年7月29日 下午9:56:29 
    * @version V1.0
     */
    public class CompressUtil {
    	static String path = "F:\图片\"; //文件夹路径
    	
    	public static void main(String[] args) {
    		String filePath = path + "铜钱.jpg"; //图片名称
    		String outPath = path + "new.zip"; //压缩文件名称地址
    		zipUtil(filePath, outPath); //压缩
    	}
    	
    	public static void zipUtil(String filePath, String outPath){
    		//输入
    		File file = null;
    		FileInputStream fis = null;
    		BufferedInputStream bin = null;
    		DataInputStream dis = null;
    		//输出
    		File outfile = null;
    		FileOutputStream fos = null;
    		BufferedOutputStream bos = null;
    		ZipOutputStream zos = null;
    		ZipEntry ze = null;
    		try {
    			//输入-获取数据
    			file = new File(filePath);
    			fis = new FileInputStream(file);
    			bin = new BufferedInputStream(fis);
    			dis = new DataInputStream(bin); //增强
    			//输出-写出数据
    			outfile = new File(outPath);
    			fos = new FileOutputStream(outfile); 
    			bos = new BufferedOutputStream(fos, 1024); //the buffer size
    			zos = new ZipOutputStream(bos); //压缩输出流
    			ze = new ZipEntry(file.getName()); //实体ZipEntry保存
    			zos.putNextEntry(ze);
    			int len = 0;//临时文件
    			byte[] bts = new byte[1024]; //读取缓冲
    			while((len=dis.read(bts)) != -1){ //每次读取1024个字节
    				System.out.println(len);
    				zos.write(bts, 0, len); //每次写len长度数据,最后前一次都是1024,最后一次len长度
    			}
    			System.out.println("压缩成功");
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally{
    			try { //先实例化后关闭
    				zos.closeEntry();
    				zos.close();
    				bos.close();
    				fos.close();
    				dis.close();
    				bin.close();
    				fis.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    }
    
    

    以上仅为单个文件压缩,了解压缩流程。

    下面这个是支持 单文件 或 文件夹 压缩:

    java 实现压缩文件(单文件 或 文件夹)

    ok。

  • 相关阅读:
    iOS input被键盘遮挡
    js解析xml出现的问题总结
    Java——操作Excel表格,读取表格内容
    进销存管理系统——代码架构
    转换机和路由器工作原理
    考勤系统代码分析——主页布局easyui框架
    考勤系统——代码分析datagrid
    测试知识整理——基础篇
    Base64编码原理分析
    考勤系统——代码分析
  • 原文地址:https://www.cnblogs.com/qq1995/p/10358992.html
Copyright © 2011-2022 走看看