可以參考一下這個代碼:
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出渝北免費(fèi)做網(wǎng)站回饋大家。
import java.io.*;??
public class pack??
{??
public final static byte F_PACK_MAGIC[]={ 0x73,0x6C,0x68,0x21};??
/* magic number for packed files */??
public final static byte F_NOPACK_MAGIC[]= { 0x73, 0x6C, 0x68, 0x2E};??
/* magic number for autodetect */??
private static void usage()??
{??
System.out.print("\nFile compression utility for Allegro 3.12");??
System.out.print("\nBy Shawn Hargreaves, Aug 1999. Java version by Radim Kolar, Dec 1999\n\n");??
System.out.print("Usage: 'pack in out' to pack a file\n");??
System.out.print("?????? 'pack u in out' to unpack a file\n");??
System.exit(1);??
}??
public static void main(String argv[]) throws IOException??
{??
String t="";??
String f1="",f2="";??
InputStream in;??
OutputStream out;??
long s1,s2;??
boolean pack=true;??
if (argv.length==2) {??
f1 = argv[0];??
f2 = argv[1];??
t = "Pack";??
}??
else if ((argv.length==3) (argv[0].length()==1) ??
((argv[0].charAt(0)=='u') || (argv[0].charAt(0)=='U'))) {??
f1 = argv[1];??
f2 = argv[2];??
t = "Unpack";??
pack=false;??
}??
else??
usage();??
if (f1.equals(f2))??
{??
System.out.println("\nError: Files must be different.");??
System.exit(1);??
}??
in = null;??
try??
{??
in? = new FileInputStream(f1);??
}??
catch ( IOException i)??
{??
System.out.println("\nError: "+f1+" - Can't open.");??
System.exit(1);??
}??
s1 = new File(f1).length();??
/* handle magic */??
if(!pack)?????????? {??
byte magic[]=new byte[4];??
in.read(magic);??
int bad=0;??
for(int i=2;i=0;i--)??
if(magic[i]!=F_PACK_MAGIC[i])???
bad=1;??
if(bad==0)??
if(magic[3]!=F_PACK_MAGIC[3])??
if(magic[3]==F_NOPACK_MAGIC[3]) bad=2;??
else???????????????????????? bad=1;??
if(bad==1)??
{??
System.out.println("\nError: "+f1+" - Not a packed file. (No magic)");??
System.exit(1);??
}??
if(bad==0) in? = new LZSSInputStream(in);??
}??
out = new FileOutputStream(f2);??
if(pack)???
{??
out.write(F_PACK_MAGIC);??
out = new LZSSOutputStream(out);??
}??
System.out.println(t+"ing "+f1+" into "+f2+"...");??
byte b[]=new byte[512];??
int i;??
while ( (i=in.read(b))!=-1) {??
out.write(b,0,i);??
}??
in.close();??
out.close();??
if (s1 0) {??
s2 = new File(f2).length();??
System.out.println("\nInput size: "+s1+"\nOutput size: "+s2+"\n"+(s2*100+(s11))/s1+"%");??
}??
return;??
}??
}
你好,由于內(nèi)容比較多,先概述一下先。如圖所示,為我寫的一個壓縮軟件,原理是利用哈弗曼算法實現(xiàn)的。我將資料整理好稍后就發(fā)到你郵箱,但在這里簡要說明一下代碼。
請看我的空間
中的文章共5篇(太長了)
1.HuffmanTextEncoder類完成壓縮功能,可直接運(yùn)行,壓縮測試用文本文件。
2.HuffmanTextDecoder類完成解壓縮功能,可直接運(yùn)行,解壓縮?壓縮后的文本文件。
3.BitReader,工具類,實現(xiàn)對BufferedInputStream的按位讀取。
4.BitWriter,工具類,實現(xiàn)按位寫入的功能。該類來自網(wǎng)絡(luò)。
5.MinHeapT?,模板工具類,實現(xiàn)了一個最小堆。生成Huffman樹時使用。
package javase1.day02;\x0d\x0a /**\x0d\x0a * 1)一種字符串壓縮算法\x0d\x0a * str ="aaaabbccccddeaaa"\x0d\x0a * 壓縮為:"4a2b4c2d1e3a"\x0d\x0a * 原理實現(xiàn):\x0d\x0a * str = "aaaabbccccddeaaa"\x0d\x0a * \x0d\x0a * c = str.charAt(i)//c是每個字符\x0d\x0a * 1) 初始化\x0d\x0a * StringBuilder buf = new StringBuilder();\x0d\x0a * int count = 0;代表相同的字符個數(shù)\x0d\x0a * char ch = str.charAt(0);代表正在統(tǒng)計的相同字符'a' \x0d\x0a * 2) 從i=1開始迭代每個字符\x0d\x0a * c = str.charAt(i);//c是每個當(dāng)前字符\x0d\x0a * 3) 檢查當(dāng)前字符c與被統(tǒng)計ch是否一致\x0d\x0a * 如果一致 count++\x0d\x0a * 否則(不一致)\x0d\x0a * 向緩沖區(qū)buf增加count+ch\x0d\x0a * count=0,ch=c;\x0d\x0a * 3)沒有下個字符就結(jié)束\x0d\x0a * 4)還有字符串嗎?回到2)\x0d\x0a * \x0d\x0a * 2)實現(xiàn)還原算法\x0d\x0a * str = "4a2b4c2d1e3a";\x0d\x0a * i\x0d\x0a */\x0d\x0apublic class Demo5 {\x0d\x0a public static void main(String[] args) {\x0d\x0a String s = comp("aaaawwwwe");\x0d\x0a System.out.println(s);\x0d\x0a// System.out.println(decomp(s));\x0d\x0a \x0d\x0a }\x0d\x0a public static String comp(String str){\x0d\x0a int i = 1;\x0d\x0a StringBuilder buf = new StringBuilder();\x0d\x0a int count = 1;\x0d\x0a char ch = str.charAt(0);\x0d\x0a for(;;){\x0d\x0a char c = i==str.length() ? '\10':str.charAt(i);\x0d\x0a if(c==ch){\x0d\x0a count++;\x0d\x0a }else{\x0d\x0a if(count == 1)\x0d\x0a buf.append(ch);\x0d\x0a else \x0d\x0a buf.append(count).append(ch);\x0d\x0a count=1;\x0d\x0a ch = c;\x0d\x0a } \x0d\x0a i++;\x0d\x0a if(i==str.length()+1){\x0d\x0a break;\x0d\x0a } \x0d\x0a }\x0d\x0a return buf.toString();\x0d\x0a \x0d\x0a }\x0d\x0a}
用java代碼壓縮應(yīng)用到程序了,代碼一般是比較復(fù)雜的,對pdf文件的mate標(biāo)簽優(yōu)化,這類標(biāo)簽包括三類,pdf文件不是網(wǎng)頁就是個文件,何況我們可以用pdf壓縮工具壓縮,下面有個解決方法,樓主可以做參照。
1:點擊打開工具,打開主頁面上有三個功能進(jìn)行選擇,我們選擇pdf文件壓縮。
2:這這個頁面中我們選擇pdf文件在這里打開,點擊“添加文件”按鈕將文件添加進(jìn)來。
3:然后在頁面中點擊“開始壓縮”就可以開始壓縮文件了。
4:壓縮完成的文件頁面會顯示已經(jīng)完成。
當(dāng)前文章:壓縮算法java代碼 java壓縮工具類
URL分享:http://chinadenli.net/article12/dogehgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、網(wǎng)站維護(hù)、搜索引擎優(yōu)化、動態(tài)網(wǎng)站、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)