前言

Android端可以对字符串进行压缩,我们在进行大量简单文本传输时,可以先压缩字符串再发送。接收端接收后再解压。也可以将字符串压缩后存入数据库中,下面话不多说了,来一起看看详细的介绍吧。
使用到的类库
GZIPOutputStream
代码示例
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class StrZipUtil {
/**
* @param input 需要压缩的字符串
* @return 压缩后的字符串
* @throws IOException IO
*/
public static String compress(String input) throws IOException {
if (input == null || input.length() == 0) {
return input;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzipOs = new GZIPOutputStream(out);
gzipOs.write(input.getBytes());
gzipOs.close();
return out.toString("ISO-8859-1");
}
/**
* @param zippedStr 压缩后的字符串
* @return 解压缩后的
* @throws IOException IO
*/
public static String uncompress(String zippedStr) throws IOException {
if (zippedStr == null || zippedStr.length() == 0) {
return zippedStr;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(zippedStr
.getBytes("ISO-8859-1"));
GZIPInputStream gzipIs = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = gzipIs.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
// toString()使用平台默认编码,也可以显式的指定如toString("GBK")
return out.toString();
}
}
红米手机测试输出
08-09 13:16:53.388 32248-32267/com.rustfisher.ndkproj D/rustApp: 开始存入数据库 ori1 len=304304 08-09 13:16:53.418 32248-32267/com.rustfisher.ndkproj D/rustApp: 已存入数据库 ori1 len=304304 , 耗时约37 ms 08-09 13:16:53.418 32248-32267/com.rustfisher.ndkproj D/rustApp: 开始压缩 ori1 len=304304 08-09 13:16:53.438 32248-32267/com.rustfisher.ndkproj D/rustApp: 压缩完毕 zip1 len=1112 , 耗时约19 ms 08-09 13:16:53.438 32248-32267/com.rustfisher.ndkproj D/rustApp: 存压缩后的数据进数据库 zip1.length=1112 08-09 13:16:53.448 32248-32267/com.rustfisher.ndkproj D/rustApp: 压缩后的数据已进数据库 zip1.length=1112 , 耗时约8 ms 08-09 13:16:53.448 32248-32267/com.rustfisher.ndkproj D/rustApp: 解压开始 08-09 13:16:53.488 32248-32267/com.rustfisher.ndkproj D/rustApp: 解压完毕 耗时约36 ms
存储时间受存储字符串的长度影响。字符串长度与存储耗时正相关。
荣耀手机测试
08-09 10:38:42.759 23075-23109/com.rustfisher D/rustApp: 开始压缩 ori1 len=304304 08-09 10:38:42.764 23075-23109/com.rustfisher D/rustApp: 压缩完毕 zip1 len=1112 08-09 10:38:42.764 23075-23109/com.rustfisher D/rustApp: 解压开始 08-09 10:38:42.789 23075-23109/com.rustfisher D/rustApp: 解压完毕
此例中,荣耀压缩耗时约5ms,解压耗时约25ms。
可以看出,压缩后与原长度之比 1112/304304, 约0.365%
压缩和解压缩耗时视手机情况而定。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# android
# 字符串压缩
# 字符串压缩算法
# java
# java字符串压缩解压示例
# java实现压缩字符串和java字符串过滤
# 说了
# 不多
# 可以看出
# 这篇文章
# 谢谢大家
# 解压缩
# 而定
# 以对
# 数据库中
# 再发
# 之比
# 类库
# 此例
# 有疑问
# throws
# GZIPInputStream
# static
# IO
# param
# input
相关文章:
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何快速搭建高效香港服务器网站?
再谈Python中的字符串与字符编码(推荐)
大学网站设计制作软件有哪些,如何将网站制作成自己app?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
Swift中swift中的switch 语句
如何在阿里云虚拟主机上快速搭建个人网站?
如何选择域名并搭建高效网站?
如何在搬瓦工VPS快速搭建网站?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
如何高效完成自助建站业务培训?
如何通过.red域名打造高辨识度品牌网站?
名字制作网站免费,所有小说网站的名字?
建站之星如何实现网站加密操作?
建站之星如何保障用户数据免受黑客入侵?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
孙琪峥织梦建站教程如何优化数据库安全?
建站之星如何取消后台验证码生成?
建站之星后台管理如何实现高效配置?
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
电商网站制作公司有哪些,1688网是什么意思?
建站三合一如何选?哪家性价比更高?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
常州企业建站如何选择最佳模板?
如何在阿里云服务器自主搭建网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何获取上海专业网站定制建站电话?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何快速搭建自助建站会员专属系统?
香港服务器租用每月最低只需15元?
如何通过IIS搭建网站并配置访问权限?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
如何零基础开发自助建站系统?完整教程解析
,怎么在广州志愿者网站注册?
公司网站制作价格怎么算,公司办个官网需要多少钱?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
如何快速搭建支持数据库操作的智能建站平台?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何在局域网内绑定自建网站域名?
如何实现建站之星域名转发设置?
高防服务器租用指南:配置选择与快速部署攻略
在线制作视频的网站有哪些,电脑如何制作视频短片?
建站主机解析:虚拟主机配置与服务器选择指南
模具网站制作流程,如何找模具客户?
设计网站制作公司有哪些,制作网页教程?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
*请认真填写需求信息,我们会在24小时内与您取得联系。