java壓縮軟件代碼 Java壓縮

求一個(gè)JAVA的壓縮程序源代碼。

package com.io2.homework;

成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供呼瑪企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站制作、成都做網(wǎng)站、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為呼瑪眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

/*壓縮文件夾*/

public class MyMultipleFileZip

{

private String currentZipFilePath = "F:/MyZip.zip";

private String sourceFilePath;

private ZipOutputStream zos;

private FileInputStream fis;

public MyMultipleFileZip(String sourceFilePath)

{

try

{

this.sourceFilePath = sourceFilePath;

zos = new ZipOutputStream(new FileOutputStream(currentZipFilePath));

//設(shè)定文件壓縮級(jí)別

zos.setLevel(9);

} catch (FileNotFoundException e)

{

e.printStackTrace();

}

}

// 在當(dāng)前條目中寫(xiě)入具體內(nèi)容

public void writeToEntryZip(String filePath)

{

try

{

fis = new FileInputStream(filePath);

} catch (FileNotFoundException e1)

{

e1.printStackTrace();

}

byte[] buff = new byte[1024];

int len = 0;

try

{

while ((len = fis.read(buff)) != -1)

{

zos.write(buff, 0, len);

}

} catch (IOException e)

{

e.printStackTrace();

}finally

{

if (fis != null)

try

{

fis.close();

} catch (IOException e)

{

e.printStackTrace();

}

}

}

// 添加文件條目

public void addFileEntryZip(String fileName)

{

try

{

zos.putNextEntry(new ZipEntry(fileName));

} catch (IOException e)

{

e.printStackTrace();

}

}

public void addDirectoryEntryZip(String directoryName)

{

try

{

zos.putNextEntry(new ZipEntry(directoryName + "/"));

} catch (IOException e)

{

e.printStackTrace();

}

}

// 遍歷文件夾

public void listMyDirectory(String filePath)

{

File f = new File(filePath);

File[] files = f.listFiles();

if(files!=null)

{

for (File currentFile : files)

{

// 設(shè)置條目名稱(此步驟非常關(guān)鍵)

String entryName= currentFile.getAbsolutePath().split(":")[1].substring(1);

// 獲取文件物理路徑

String absolutePath = currentFile.getAbsolutePath();

if (currentFile.isDirectory())

{

addDirectoryEntryZip(entryName);

//進(jìn)行遞歸調(diào)用

listMyDirectory(absolutePath);

}

else

{

addFileEntryZip(entryName);

writeToEntryZip(absolutePath);

}

}

}

}

// 主要流程

public void mainWorkFlow()

{

listMyDirectory(this.sourceFilePath);

if(zos!=null)

try

{

zos.close();

} catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new MyMultipleFileZip("F:/fountainDirectory").mainWorkFlow();

}

}

Java數(shù)據(jù)壓縮格式程序設(shè)計(jì)方法

GZIP壓縮格式簡(jiǎn)介在JDK API中 同樣定義了多種類(lèi)型用于創(chuàng)建和解除GZIP壓縮格式數(shù)據(jù)文件的通用對(duì)象和方法 用于基于JDK編寫(xiě)GZIP壓縮數(shù)據(jù)管理程序 GZIP壓縮格式是在Sun Solaris操作系統(tǒng)中廣泛采用的壓縮數(shù)據(jù)格式 由于在數(shù)據(jù)壓縮過(guò)程中可以采用多種類(lèi)型的壓縮算法 因此 壓縮文件的壓縮比很高 另外 在創(chuàng)建的壓縮文件中 定義了用于表述時(shí)間和文件屬主的時(shí)戳(Time Stamp) 可以使文件方便地在網(wǎng)絡(luò)中傳輸和交換 GZIP壓縮數(shù)據(jù)文件由一系列的數(shù)字構(gòu)成 而各數(shù)字對(duì)應(yīng)如下描述壓縮文件信息的字段 ID 缺省值 用于標(biāo)識(shí)GZIP壓縮格式 ID 缺省值 用于標(biāo)識(shí)GZIP壓縮格式 CM 采用的壓縮方法 其值為 ~ 是保留值 標(biāo)識(shí)采用 deflate 壓縮方法 FLG 用于標(biāo)識(shí)各占用位的標(biāo)志 MTIME 記錄了最近修改時(shí)間 XFL 用于標(biāo)識(shí)采用壓縮算法的選項(xiàng) OS 定義了操作系統(tǒng)類(lèi)型 XLEN 定義了附加信息段的長(zhǎng)度 M 壓縮文件說(shuō)明信息 CRC 記錄了CRC 算法采用的循環(huán)冗余校驗(yàn)值 上述信息完整描述了GZIP壓縮格式數(shù)據(jù) 當(dāng)然 基于JDK開(kāi)發(fā)的壓縮數(shù)據(jù)管理程序 不需要明確知道上述壓縮數(shù)據(jù)定義格式 只需要?jiǎng)?chuàng)建相應(yīng)的管理對(duì)象并調(diào)用這些對(duì)象中定義的方法即可 JDK API中ZIP壓縮格式支持對(duì)象GZIP壓縮格式是在JDK API中定義支持的另外一種數(shù)據(jù)壓縮格式 由上面介紹的GZIP格式數(shù)據(jù)壓縮方法可知 GZIP壓縮格式具有更大的壓縮比 因此 在Unix操作系統(tǒng)中 這種類(lèi)型的數(shù)據(jù)壓縮形式的應(yīng)用十分普及 與JDK API對(duì)ZIP壓縮格式的支持不同 在JDK API中 只定義了GZIPInputStream和GZIPOutputStream兩種類(lèi)型的流(Stream)對(duì)象 用于在基于流的數(shù)據(jù)傳輸過(guò)程中實(shí)現(xiàn)數(shù)據(jù)壓縮 這兩個(gè)對(duì)象的繼承定義結(jié)構(gòu)如下所示 java lang Object|+ java io InputStream|+ java io FilterInputStream|+ java util zip InflaterInputStream|+ java util zip GZIPInputStream(java util zip GZIPOutputStream)以采用GZIP格式進(jìn)行數(shù)據(jù)輸入處理GZIPInputStream對(duì)象為例 由上述對(duì)象的繼承定義結(jié)構(gòu)可以看出 該對(duì)象繼承了InflaterInputStream流對(duì)象 需要說(shuō)明的是 在ZIP壓縮包中 定義了Inflater和Deflater兩個(gè)對(duì)象 用于基于ZLIB壓縮庫(kù)實(shí)現(xiàn)多種格式的數(shù)據(jù)壓縮和解壓縮 因此 InflaterInputStream流對(duì)象的作用是采用ZLIB庫(kù)作為數(shù)據(jù)壓縮管理的引擎 而GZIPInputStream對(duì)象則進(jìn)一步將流的數(shù)據(jù)加工進(jìn)行細(xì)化 用于讀取GZIP格式的壓縮數(shù)據(jù) 同理 GZIPOutputStream對(duì)象用于創(chuàng)建GZIP格式的壓縮數(shù)據(jù)文件 下面 將對(duì)兩個(gè)對(duì)象的定義內(nèi)容進(jìn)行說(shuō)明 ●GZIPInputStream對(duì)象定義結(jié)構(gòu) java util zip GZIPInputStream靜態(tài)成員變量 protected CRC crc 用于說(shuō)明采用的數(shù)據(jù)壓縮算法為CRC protected boolean eos 說(shuō)明輸入流對(duì)象結(jié)束讀取輸入數(shù)據(jù) 構(gòu)造方法 GZIPInputStream(InputStream in) 采用默認(rèn)的緩沖區(qū)字節(jié)數(shù)創(chuàng)建輸入流對(duì)象 GZIPInputStream(InputStream in int size) 創(chuàng)建由整數(shù)類(lèi)型變量size指定緩沖區(qū)字節(jié)數(shù)的輸入流對(duì)象 成員方法 該對(duì)象只定義了如下兩個(gè)成員方法 void close() 關(guān)閉輸入流對(duì)象 int read(byte[] buf int off int len) 讀取輸入流的數(shù)據(jù)到buf字節(jié)數(shù)組中 ●GZIPOutputStream對(duì)象定義結(jié)構(gòu) java util zip GZIPOutputStream靜態(tài)成員變量 protected CRC crc 用于說(shuō)明采用的數(shù)據(jù)壓縮算法為CRC 構(gòu)造方法 GZIPOutputStream(OutputStream out) 采用默認(rèn)的緩沖區(qū)字節(jié)數(shù)創(chuàng)建輸出流對(duì)象 GZIPOutputStream(OutputStream out int size) 創(chuàng)建由整數(shù)類(lèi)型變量size指定緩沖區(qū)字節(jié)數(shù)的輸出流對(duì)象 成員方法 void close() 關(guān)閉輸出流對(duì)象 void finish() 結(jié)束數(shù)據(jù)輸出 但不關(guān)閉輸出流對(duì)象 void write(byte[] buf int off int len) 將字節(jié)數(shù)組buf中的內(nèi)容壓縮輸出到輸出流對(duì)象中 創(chuàng)建GZIP壓縮格式文件實(shí)例經(jīng)過(guò)前面對(duì)JDK API中創(chuàng)建GZIP壓縮格式文件的相關(guān)對(duì)象的結(jié)構(gòu) 成員方法定義形式的說(shuō)明 讀者一定會(huì)問(wèn)如何應(yīng)用這些對(duì)象和對(duì)象中定義的成員方法呢?請(qǐng)讀者看下面的實(shí)例代碼 //ZipDemo javaimport java io *; import java util zip *; public class GZIPDemo { public static void main(String[] args) { if (args length != ) { System out println("Usage:java GZIPDemo SourceFile DestnFile" + args length); System exit( ); } try { int number; //打開(kāi)需壓縮文件作為文件輸入流 FileInputStream fin = new FileInputStream(args[ ]); //建立壓縮文件輸出流FileOutputStream fout=new FileOutputStream(args[ ]); //建立GZIP壓縮輸出流 GZIPOutputStream gzout=new GZIPOutputStream(fout); //設(shè)定讀入緩沖區(qū)尺寸byte[] buf=new byte[ ]; while ((number = fin read(buf)) != ) gzout write(buf number); gzout close(); fout close(); fin close(); }catch(IOException e) { System out println(e); } } }上面的程序用于將命令行中指定的文件SourceFile進(jìn)行壓縮 創(chuàng)建GZIP格式的壓縮文件DestnFile 在該程序的實(shí)現(xiàn)代碼中 首先創(chuàng)建用于進(jìn)行文件輸入和輸出的FileInputStream和FileOutputStream對(duì)象 并以FileOutputStream對(duì)象實(shí)例為參數(shù)創(chuàng)建GZIPOutputStream對(duì)象實(shí)例 從而為創(chuàng)建GZIP格式壓縮文件建立數(shù)據(jù)流基礎(chǔ) 在隨后的代碼中 利用FileInputStream對(duì)象中定義的read方法 從源文件中讀取待壓縮文件的內(nèi)容 同時(shí)利用GZIPOutputStream對(duì)象中定義的write方法將壓縮后的數(shù)據(jù)寫(xiě)出到輸出文件中 從而實(shí)現(xiàn)數(shù)據(jù)文件的GZIP格式壓縮處理 在Java中創(chuàng)建GZIP格式壓縮文件的方法很簡(jiǎn)單 并且利用WinZip WinRAR等類(lèi)型的壓縮管理軟件均能夠打開(kāi)創(chuàng)建的GZIP格式的壓縮文件 那么 如何利用JDK API中定義的對(duì)象將被壓縮的文件解壓縮呢?請(qǐng)讀者看下一節(jié)的內(nèi)容 GZIP格式文件解壓縮實(shí)例下面的程序用于將利用JDK API中定義對(duì)象的成員方法 將GZIP格式壓縮文件進(jìn)行解壓縮 從而恢復(fù)壓縮原始文件 //UnGZIPDemo javaimport java io *; import java util zip *; public class UnGZIPDemo { public static void main(String[] args) { if (args length != ) { System out println("Usage:java UnGZIPDemo GZIPFile DestnFile"); System exit( ); } try { int number;//建立GZIP壓縮文件輸入流 FileInputStream fin=new FileInputStream(args[ ]); //建立GZIP解壓工作流 GZIPInputStream gzin=new GZIPInputStream(fin); //建立解壓文件輸出流 FileOutputStream fout=new FileOutputStream(args[ ]); //設(shè)定讀入緩沖區(qū)尺寸byte[] buf=new byte[ ]; while ((nnumber=gzin read(buf buf length)) != ) fout write(buf nnumber); gzin close(); fout close(); fin close(); }catch(IOException e) { System out println(e); } } }在GZIP格式壓縮文件解壓縮程序代碼中 仍然首先創(chuàng)建FileInputStream和FileOutputStream對(duì)象 并基于創(chuàng)建的FileInputStream對(duì)象創(chuàng)建GZIPInputStream對(duì)象 在隨后的代碼中 調(diào)用GZIPInputStream對(duì)象中定義的read方法 在從壓縮文件中讀取數(shù)據(jù)內(nèi)容并進(jìn)行解壓縮處理后 將解除壓縮后的數(shù)據(jù)內(nèi)容利用文件輸出流對(duì)象進(jìn)行輸出 從而實(shí)現(xiàn)數(shù)據(jù)文件的解壓縮處理 小 lishixinzhi/Article/program/Java/hx/201311/27034

關(guān)于Java的解壓縮的代碼?

package?com.javatest.techzero.gui;??

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.FileOutputStream;

import?java.io.InputStream;

import?java.io.OutputStream;

import?java.util.zip.ZipEntry;

import?java.util.zip.ZipFile;

import?java.util.zip.ZipInputStream;?

public?class?ZipFileDemo?{

@SuppressWarnings("resource")

public?static?void?main(String?args[])?throws?Exception?{

File?file?=?new?File("d:"?+?File.separator?+?"test.zip");

File?outFile?=?null;

ZipFile?zipFile?=?new?ZipFile(file);

ZipInputStream?zipInput?=?new?ZipInputStream(new?FileInputStream(file));

ZipEntry?entry?=?null;

InputStream?input?=?null;

OutputStream?out?=?null;

while?((entry?=?zipInput.getNextEntry())?!=?null)?{

System.out.println("開(kāi)始解壓縮"?+?entry.getName()?+?"文件。。。");

outFile?=?new?File("d:"?+?File.separator?+?entry.getName());

if?(!outFile.getParentFile().exists())?{

outFile.getParentFile().mkdir();

}

if?(!outFile.exists())?{

outFile.createNewFile();

}

input?=?zipFile.getInputStream(entry);

out?=?new?FileOutputStream(outFile);

int?temp?=?0;

while?((temp?=?input.read())?!=?-1)?{

SPAN?style="WHITE-SPACE:?pre"?/SPAN//System.out.println(temp);

out.write(temp);

}

input.close();

out.close();

}

System.out.println("Done!");

}

}

僅供參考

如何使用JAVA代碼壓縮PDF文件

用java代碼壓縮應(yīng)用到程序了,代碼一般是比較復(fù)雜的,對(duì)pdf文件的mate標(biāo)簽優(yōu)化,這類(lèi)標(biāo)簽包括三類(lèi),pdf文件不是網(wǎng)頁(yè)就是個(gè)文件,何況我們可以用pdf壓縮工具壓縮,下面有個(gè)解決方法,樓主可以做參照。

1:點(diǎn)擊打開(kāi)工具,打開(kāi)主頁(yè)面上有三個(gè)功能進(jìn)行選擇,我們選擇pdf文件壓縮。

2:這這個(gè)頁(yè)面中我們選擇pdf文件在這里打開(kāi),點(diǎn)擊“添加文件”按鈕將文件添加進(jìn)來(lái)。

3:然后在頁(yè)面中點(diǎn)擊“開(kāi)始?jí)嚎s”就可以開(kāi)始?jí)嚎s文件了。

4:壓縮完成的文件頁(yè)面會(huì)顯示已經(jīng)完成。

如何用java代碼調(diào)用解壓工具去解壓.exe文件

再 windows下通過(guò) cmd命令執(zhí)行解壓縮沒(méi)問(wèn)題,但是通過(guò) java代碼去執(zhí)行不能解壓是為什么?我在開(kāi)始運(yùn)行中輸入命令: cmd/ c rar. exe x- y d:\\ auto. rar d:\\----上面命令可以解壓成功,但是通過(guò)下面 java代碼不能實(shí)現(xiàn)解壓縮功能,請(qǐng)指點(diǎn)。主要代碼: java. lang. Runtime. getRuntime(). exec(" cmd/ c rar. exe x- y d:\\ auto. rar d:\\");

再 windows下通過(guò) cmd命令執(zhí)行解壓縮沒(méi)問(wèn)題,但是通過(guò) java代碼去執(zhí)行不能解壓是為什么?我在開(kāi)始運(yùn)行中輸入命令: cmd/ c rar. exe x- y d:\\ auto. rar d:\\----上面命令可以解壓成功,但是通過(guò)下面 java代碼不能實(shí)現(xiàn)解壓縮功能,請(qǐng)指點(diǎn)。主要代碼: java. lang. Runtime. getRuntime(). exec(" cmd/ c rar. exe x- y d:\\ auto. rar d:\\");

本文標(biāo)題:java壓縮軟件代碼 Java壓縮
文章地址:http://www.muchs.cn/article2/doocgoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)定制開(kāi)發(fā)、企業(yè)建站、網(wǎng)站排名、App設(shè)計(jì)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作