可以参考一下这个代码:
公司主营业务:成都网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出渝北免费做网站回馈大家。
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;
}
}
你好,由于内容比较多,先概述一下先。如图所示,为我写的一个压缩软件,原理是利用哈弗曼算法实现的。我将资料整理好稍后就发到你邮箱,但在这里简要说明一下代码。
请看我的空间
中的文章共5篇(太长了)
1.HuffmanTextEncoder类完成压缩功能,可直接运行,压缩测试用文本文件。
2.HuffmanTextDecoder类完成解压缩功能,可直接运行,解压缩 压缩后的文本文件。
3.BitReader,工具类,实现对BufferedInputStream的按位读取。
4.BitWriter,工具类,实现按位写入的功能。该类来自网络。
5.MinHeapT ,模板工具类,实现了一个最小堆。生成Huffman树时使用。
package javase1.day02;\x0d\x0a /**\x0d\x0a * 1)一种字符串压缩算法\x0d\x0a * str ="aaaabbccccddeaaa"\x0d\x0a * 压缩为:"4a2b4c2d1e3a"\x0d\x0a * 原理实现:\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;代表相同的字符个数\x0d\x0a * char ch = str.charAt(0);代表正在统计的相同字符'a' \x0d\x0a * 2) 从i=1开始迭代每个字符\x0d\x0a * c = str.charAt(i);//c是每个当前字符\x0d\x0a * 3) 检查当前字符c与被统计ch是否一致\x0d\x0a * 如果一致 count++\x0d\x0a * 否则(不一致)\x0d\x0a * 向缓冲区buf增加count+ch\x0d\x0a * count=0,ch=c;\x0d\x0a * 3)没有下个字符就结束\x0d\x0a * 4)还有字符串吗?回到2)\x0d\x0a * \x0d\x0a * 2)实现还原算法\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代码压缩应用到程序了,代码一般是比较复杂的,对pdf文件的mate标签优化,这类标签包括三类,pdf文件不是网页就是个文件,何况我们可以用pdf压缩工具压缩,下面有个解决方法,楼主可以做参照。
1:点击打开工具,打开主页面上有三个功能进行选择,我们选择pdf文件压缩。
2:这这个页面中我们选择pdf文件在这里打开,点击“添加文件”按钮将文件添加进来。
3:然后在页面中点击“开始压缩”就可以开始压缩文件了。
4:压缩完成的文件页面会显示已经完成。