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 sizezos = 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。

转载于:https://www.cnblogs.com/qq1995/p/10358992.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jekins构建触发器详解

jenkins版本:2.89.2 1、触发远程构建 (例如,使用脚本):通过一个网址的访问来触发构建,这样就不需要登录jenkins系统也能触发构建了。 示例地址: http://localhost:8848/job/FlashRegistration/build??token口令&cause书写构…

ES5-拓展 隐式数据类型转换

Boolean转换原则:非假即真 6种虚值 原始值转换为原始值 对象转换为原始值 Date()和new Date() new Date可以不写括号(new方式返回的一定是对象),返回Date对象Date()返回函数执行,返回时间字符串 引用值转原始值 先找valueOf方法(一般…

Swagger的简单入门【转载】

一、Swagger简介 上一篇文章中我们介绍了Spring Boot对Restful的支持,这篇文章我们继续讨论这个话题,不过,我们这里不再讨论Restful API如何实现,而是讨论Restful API文档的维护问题。 在日常的工作中,我们往往需要给前…

visual studio code搭建本地服务器(node.js+express)

一、安装node.js(常规软件安装流程,比较简单,不用赘述) 二、安装express框架 1. 打开Windows命令提示符,输入: npm install express -g,等待,安装好如下所示: npm instal…

chrome调试

技术拓展直播课8 按chrome的官方文档 长按刷新 清除缓存(不一定好使) Ctrl f 查找类 console控制台见b站 bilibili source面板直接打断点 效果和debugger一样 单步调试 进入到函数的下一步 网速 no throttling 是否需要过滤 domcontentloaded d…

61-1 认识webpack

认识webpack 面向过程开发的不便引入外部js执行顺序面向对象开发 加载多个文件耗时更多 增加了http请求 引入过多js变量来源不明 优化 使用前先import 但使用import语法需要借助工具webpack翻译为浏览器可以解析的语法安装node自动携带npmwebpack若没有全局安装 需要使用npx…

css font简写

一、字体属性主要包括下面几个 font-family,font-style,font-variant,font-weight,font-size,fontfont-family(字体族): “Arial”、“Times New Roman”、“宋体”、“黑体”等;font-style&…

javascript --- 原生的拖拽功能实现

准备一个方块: <style>.drag{background-color:#aaf;position:absolute;} </style> <div class"drag" style"width:100px;height:100px;top:0;left:0"></div>监听鼠标的按住事件: let dragDiv document.getElementsByClassName…

web安全学习-验证机制存在的问题

验证机制是应用程序防御恶意攻击的中心机制。它处于防御未授权的最前沿&#xff0c;如果用户能够突破那些防御&#xff0c;他们通常能够控制应用程序的全部功能&#xff0c;自由访问其中的数据。缺乏安全稳定的验证机制&#xff0c;其他核心安全机制&#xff08;如回话管理和访…

ES5-拓展 原型链、继承、类

Symbol不是构造函数 Object不是原型是实例对象 他的构造器继承原型上的构造器 undefined是未定义 null是空指针 一、原型链 1. 函数也是实例对象 2. 构造函数Object是由Function构造出来的 3. 有一种说法是&#xff0c;原型链的终点是null Object.prototype.__proto__指向nul…

spring boot 加载application配置文件

这就要注意了 转载于:https://www.cnblogs.com/huochaihe/p/9397849.html

javascript --- 防抖与节流

先做一个监听鼠标移动的base: <style>#content{height:150px;width:200px;text-align:center;color:#fff;background-color:#ccc;font-size: 70px;} </style> <div id"content"></div> <script>let content document.getElementById…

DOM-9 【实战】模块化开发Todolist(面向过程)

模块化分类 按dom结构划分按功能划分&#xff08;组件化开发&#xff09; 模块与模块之间可以相互依赖&#xff0c;但互不影响 模块&#xff1a;IIFE赋值给一个变量&#xff0c;当引入模块时&#xff0c;IIFE会立即执行 单标签闭合才符合W3C规范display、position放在上面css是…

DOM-10 面向对象开发Todolist

将插件配置项写在html的div里&#xff0c;data-config自定义属性&#xff0c;外单引号&#xff0c;内双引号&#xff08;内部是JSON字符串&#xff09; <div class"todo-wrap" data-config{"plusBtn":"j-show-input","inputArea":…

Ansible基础概述

一、Ansible简介 Ansible基于Python语言实现&#xff0c;由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理&#xff0c;流程控制&#xff0c;资源部署等多方面工作。Ansible公司负责Ansible开源软件的维护&#xff0c;管理。一般软件的更新大概每…

DOM-12 【模拟桌面待讲评】鼠标事件深入、点击与拖拽分离、双击事件

鼠标事件深入 点击事件 mousedown mouseupposition: absolute 会将内联元素变为块级&#xff08;比如a&#xff09;a标签的协议限定符&#xff08;伪协议&#xff0c;防止跳转和刷新&#xff0c;让href不生效&#xff09;&#xff0c;javascript:;&#xff0c;可以让点击和拖…

scrapy的操作

转载于:https://www.cnblogs.com/mengqingjian/p/8337772.html

Devexpress xaf针对某个用户登录后在面板中设置导航无效的解决方法

Devexpress xaf框架生成的项目默认情况下导航栏是显示在左侧&#xff0c;有时候我们用某个账户登录后&#xff0c;发现导航栏无法显示在左侧&#xff0c;操作十分不方便。我们可以去数据库删除当前登录用户的自定义布局 解决方法如下: 1、查询PermissionPolicyUser用户表&#…

DOM-13 【实战】输入及状态改变事件、京东搜索框

模块化 IIFE window.onload function () {init() }function init() {keySearch()others() // 多人开发的模块 }var keySearch (function () {var searchKw document.getElementById(J_search_kw),autoKw document.getElementById(J_autoKw),recomKw JSON.parse(document…

吴恩达“机器学习”——学习笔记二

定义一些名词 欠拟合&#xff08;underfitting&#xff09;&#xff1a;数据中的某些成分未被捕获到&#xff0c;比如拟合结果是二次函数&#xff0c;结果才只拟合出了一次函数。 过拟合&#xff08;overfitting&#xff09;&#xff1a;使用过量的特征集合&#xff0c;使模型过…