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.pswp.cn/news/251090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251090.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251090.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jekins構建觸發器詳解

jenkins版本:2.89.2 1、觸發遠程構建 (例如,使用腳本):通過一個網址的訪問來觸發構建,這樣就不需要登錄jenkins系統也能觸發構建了。 示例地址: http://localhost:8848/job/FlashRegistration/build??token口令&cause書寫構…

http --- 前端的緩存

前端的緩存分為: http緩存 和 瀏覽器緩存 http緩存: // 當客戶端向服務器請求資源時,會先抵達瀏覽器緩存,如果瀏覽器有"要請求資源"的副本 // 就會從瀏覽器緩存中提取而不是從原始服務器中提取這個資源// 常見的http緩存,只能緩存get請求響應的資源,對于其他類型的響…

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…

es6 --- 手寫一個promise

一個promise實例: var getJSON function(url) {var promise new Promise(function(resolve, reject) {// XHR對象發現ajax請求var client new XMLHttpReqeust();client.open("GET", url);client.onreadystatechange handler;client.responseType "json&qu…

最大流模版 EK

EK算法基于增廣路的思想,易于理解,但由于低效并不被經常使用 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <queue> using namespace std; const int MAXN10005,MAXM100005…

Restrictions查詢用法

Restrictions查詢用法 HQL運算符 QBC運算符 含義 Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrictions.gt() 大于greater than > Restrictions.ge() 大于等于greater than or equal < Restrictions.lt() 小…

chrome調試

技術拓展直播課8 按chrome的官方文檔 長按刷新 清除緩存&#xff08;不一定好使&#xff09; Ctrl f 查找類 console控制臺見b站 bilibili source面板直接打斷點 效果和debugger一樣 單步調試 進入到函數的下一步 網速 no throttling 是否需要過濾 domcontentloaded d…

es6 --- promise和async/await的區別

首先需要了解async函數: async是Generator函數的語法糖: // 使用Generator依次讀取兩個文件 var fs require(fs); var readFile function (fileName) {return new Promise(function (resolve, reject) {fs.readFile(filename, function(error, data) {if (error) return re…

Ueditor百度編輯器中的 setContent()方法的使用

百度編輯器Ueditor所提供的setContent()方法作用是&#xff1a;設置或者改變編輯器里面的文字內容或html內容 函數說明&#xff1a;setContent(string,boolean); 參數string 是需要設置到編輯器里面的內容&#xff0c;可以含有HTML代碼&#xff0c;最后插入到編輯器中的內容是經…

小程序UI

從input組件說起 <input maxlength"10" placeholder"最大輸入長度10" /> <div id"wrapper" disabled$"{{disabled}}">\n <p id"placeholder" class$"{{_getPlaceholderClass(placeholderClass)}}"…

61-1 認識webpack

認識webpack 面向過程開發的不便引入外部js執行順序面向對象開發 加載多個文件耗時更多 增加了http請求 引入過多js變量來源不明 優化 使用前先import 但使用import語法需要借助工具webpack翻譯為瀏覽器可以解析的語法安裝node自動攜帶npmwebpack若沒有全局安裝 需要使用npx…

css font簡寫

一、字體屬性主要包括下面幾個 font-family&#xff0c;font-style&#xff0c;font-variant&#xff0c;font-weight&#xff0c;font-size&#xff0c;fontfont-family&#xff08;字體族&#xff09;: “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…

Mysql中各種與字符編碼集(character_set)有關的變量含義

mysql涉及到各種字符集&#xff0c;在此做一個總結。 字符集的設置是通過環境變量來設置的&#xff0c;環境變量和linux中的環境變量是一個意思。mysql的環境變量分為兩種&#xff1a;session和global。session變量是僅在這次會話紅中有效&#xff0c;在mysql中&#xff0c;一次…

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…