信息产业培训网

Zlib压缩算法在Java与Delphi间交互实现

http://www.miiceic.org.cn   2008-3-21 14:47:04   中程在线   浏览数:
关键字:
 

一个典型应用中,使用delphi作为客户端J2EE服务端,两者之间用XML作为数据交换,为了提高效率,对XML数据进行压缩,为此需要找到一种压缩/解压算法能够两个平台之间交互处理,使用ZLIB算法就是一个不错的解决方案。

1、JAVA实现

JDK中,在java.util.zip包中已经内置了ZLIB的实现,示例代码如下:

1//解压
2 public String decompressData(String encdata) {
3 try {
4 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
5 InflaterOutputStream zos = new InflaterOutputStream(bos); 
6 zos.write(convertFromBase64(encdata)); 
7 zos.close(); 
8 return new String(bos.toByteArray()); 
9 } catch (Exception ex) {
10 ex.printStackTrace(); 
11 return "UNZIP_ERR"; 
12 }
13 }
14
15 //压缩
16 public String compressData(String data) {
17 try {
18 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
19 DeflaterOutputStream zos = new DeflaterOutputStream(bos); 
20 zos.write(data.getBytes()); 
21 zos.close(); 
22 return new String(convertToBase64(bos.toByteArray())); 
23 } catch (Exception ex) {
24 ex.printStackTrace(); 
25 return "ZIP_ERR"; 
26 }
27 }

2、DELPHI中的实现

在DELPHI中,有第3方的控件可以利用来实现压缩/解压,这里我们选择VCLZIP V3.04,可以从这里下载http://www.vclzip.net。为了提高通用性,我们可以编写一个标准的DLL,就可以在Win32平台随意调用了,关键代码如下:

function Cmip_CompressStr(txt: PChar): pchar; stdcall; 
var
zip: TVclZip; 
compr: string; 
data: PChar; 
begin
zip := TVclZip.Create(nil); 
compr := zip.ZLibCompressString(txt); 
data := pchar(Base64EncodeStr(compr)); 
Result := StrNew(data); 
zip.Free
end; 

function Cmip_DeCompressStr(txt: PChar): pchar; stdcall; 
var
zip: TVCLUnZip; 
compr: string; 
data: PChar; 
begin
zip := TVCLUnZip.Create(nil); 
compr := zip.ZLibDecompressString(Base64DecodeStr(txt)); 
data := StrNew(pchar(compr)); 
Result := data; 
zip.Free
end;
来源:
相关连接
最新评论
*以下网友发言不代表中程在线网站的观点和看法
    我要评论

    请您注意
    1、遵守中华人民共和国的各项有关法律规定
    2、承担一切因您的行为而导致的法律责任
    3、本网留言管理人员有权删除其管辖留言内容
    4、您在本网的留言本网有权在网站内转载和引用
    5、参与本留言即表明您已经阅读并接受上述条款
    我爱研发网中电华信阿里西西JAVA爱好者北京英才网全球大学查询网
    中国人的网站导航中国电脑论坛信息产业部新浪科技搜狐IT信息产业部电子教育与考试中心
    IT世界网软件项目交易网中国软件交易网国信培训网亚远景科技....[更多]
    关于我们 | 网站地图 | 周边住宿 | 行车路线 | 联系我们 | 网站律师 | 意见反馈 | 虚位以待 | 友情链接
    中程在线(北京)科技有限公司 版权所有
    总 部:北京市海淀区青东商务楼A座西四层
    企业培训部:010-52636110 52636106 就业培训部:010-68716925 68716926
    邮 件:training@miiceic.org.cn
    京ICP备06053134号
    Copyright © 2005-2008 Miiceic.org.cn All Rights Reserved