`
尘枉_yjava
  • 浏览: 73905 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Sun 自带的Gzip压缩解压xml实例

    博客分类:
  • web
 
阅读更多
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import org.apache.commons.io.IOUtils;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class TestXml {

/**
   * 压缩
   */
  public static String zipXml(String str) throws IOException {
if (str == null || str.length() == 0) {
return str;
}
BASE64Encoder base64encoder = new BASE64Encoder();
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes("UTF-8"));
gzip.close();
return base64encoder.encode(out.toByteArray());
}
 
  /**
   * 解压
   */
public static String unZipXml(String str) throws IOException {
if (str == null || str.length() == 0) {
return str;
}
BASE64Decoder base64decoder = new BASE64Decoder();
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] bytes = base64decoder.decodeBuffer(str);
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
GZIPInputStream gunzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = gunzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
return out.toString("UTF-8");
}

public static void main(String[] args) throws IOException {
InputStream is = null;
try {
File file = new File("E:hz.xml");
is = (InputStream )new FileInputStream(new File("E:hz.xml"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}

// Byte[] bt = null;
// BufferedInputStream input = new BufferedInputStream(is);// 输入流,用于接收请求的数据
// ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(2048);// 请求数据存放对象,使用了参数2048
//
// byte[] bufferRead = new byte[1024];// 数据缓冲区
// int count = 0;// 每个缓冲区的实际数据长度
//
// while ((count = input.read(bufferRead)) != -1) {
// byteOutput.write(bufferRead, 0, count);
// }
List ioList =  IOUtils.readLines(is);
StringBuilder sb = new StringBuilder(1024);
for(int  i =0; i < ioList.size() ; i++){
sb.append(ioList.get(i));
}
String inStr = sb.toString();
System.out.println("原长度:" + inStr.length());
String outStr = zipXml(inStr);
System.out.println("长度:" + outStr.length());
System.out.println((double)inStr.length()/outStr.length());
System.out.println("压缩比:" + (double)(int)(((double)inStr.length()/outStr.length() + 0.005) * 100) / 100 + " : 1");
System.out.println("压缩后内容:" + outStr);
// String unStr = unZipXml(outStr);
// System.out.println("长度:" + unStr.length());
// System.out.println("解压后内容:" + unStr);
}

}
分享到:
评论

相关推荐

    java dom 解析 xml 实例

    Sun 公司提供了 Java API for XML Parsing(JAXP)接口来使用 SAX 和 DOM。通过 JAXP,我们可以使用任何与 JAXP 兼容的 XML 解析器。 JAXP 接口包含了三个包: 1. org.w3c.dom:W3C 推荐的用于 XML 标准规划文档...

    GZip流压缩&Web流压缩组件

     第一个软件,传输流/文件的压缩,利用Internet中惯常使用的gzip, deflate算法,可以和sun java的GZipInputStream和GZipOutputStream互操作  第二个软件,基于HTTP的压缩传输软件,可完全和IE的VBScript和...

    Sun 的 Java API for XML 语法分析

    Java API for XML Processing,简称JAXP,是Sun Microsystems推出的一种用于处理XML的Java接口,旨在为XML解析提供一种统一的、与供应商无关的访问方式。JAXP并不直接进行XML解析,而是作为一个抽象层,使得开发者...

    Sun Directory Server(Ldap)实例创建手册

    Sun Directory Server,也被称为Sun One Directory Server,是Sun Microsystems(现已被Oracle公司收购)开发的一款强大的 Lightweight Directory Access Protocol (LDAP) 服务器。LDAP是一种开放标准的目录服务协议...

    docker下nginx配置压缩字体和图片等配置

    Docker中的Nginx服务器作为一个流行的反向代理和负载均衡器,可以通过配置实现对字体、图片等静态资源的GZIP压缩。本文将详细介绍如何在Docker环境下配置Nginx以实现这一功能,主要涉及`docker-compose.yml`、`nginx...

    sun公司sun的java实例手册

    《太阳公司Sun的Java实例手册》是一份专为Java开发者准备的重要参考资料,它详细地涵盖了Sun Microsystems(现已被Oracle收购)在Java编程领域的实践经验和技术精髓。这份手册旨在帮助程序员更好地理解和应用Java...

    javax.xml.bind jdk1.5缺包

    标题 "javax.xml.bind jdk1.5缺包" 指出的问题是在使用Java 1.5版本时,遇到了与`javax.xml.bind`相关的类找不到的异常。具体来说,异常信息 "java.lang.ClassNotFoundException: ...

    JAXP 专述――Sun 的 Java API for XML 语法分析

    《深入解析JAXP:Sun的Java API for XML解析》 在探讨JAXP(Java API for XML Processing)这一主题时,我们需首先明确其在Java与XML领域中的定位与价值。JAXP并非旨在革新XML处理的方式,也不提供额外的语法分析...

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

    IBM SUN JDK XML解析相关

    IBM JDK和SUN JDK在XML解析上的主要组件包括DOM(Document Object Model)、SAX(Simple API for XML)和JAXB(Java Architecture for XML Binding)。这些组件分别对应于不同的解析策略,DOM以树形结构存储整个XML...

    Sun的j2ee实例宠物商店

    《Sun的J2EE实例:宠物商店》是一个经典的Java企业级应用示例,它展示了如何使用Sun Microsystems的Java 2 Platform, Enterprise Edition (J2EE) 技术来构建一个完整的网上购物系统。这个实例是Sun J2EE开发的一个...

    FtpClient(sun)上传下载实例代码

    FtpClient(sun)上传下载实例代码

    sun公司sun的java实例手册.rar

    《太阳公司(Sun)的Java实例手册》是Java学习者的重要参考资料,它涵盖了Sun公司(后被甲骨文公司收购)对于Java编程语言的实践应用和深入解析。这份压缩包包含两个文件:`Codesamples.PDF`和`www.chinahtml.com.txt`...

    SUN公司的java实例代码

    这个" SUN公司的java实例代码 "压缩包包含了SUN公司官方提供的Java编程实例,是学习和理解Java语言特性的宝贵资源。让我们深入探讨一下这些实例可能涵盖的知识点。 1. **Java基础语法**:实例代码可能包括Java的...

    无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl

    标题中的问题“无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl”指出,这可能是Java Web应用开发中遇到的一个常见错误,涉及到JSP(JavaServer Pages)和JSTL(Java...

    SUN公司的一些J2ME简单游戏实例

    《SUN公司J2ME简单游戏实例:探索移动平台的游戏开发》 J2ME,全称为Java 2 Micro Edition,是Java技术在嵌入式设备和移动设备上的应用平台,尤其在早期智能手机和平板电脑中广泛应用。SUN公司,即现在的Oracle公司...

Global site tag (gtag.js) - Google Analytics