最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實(shí)現(xiàn)壓縮字符串的方法示例

 更新時(shí)間:2017年08月27日 15:10:13   作者:RustFisher  
最近在做Android開發(fā),遇到了需要壓縮字符串的功能,下面這篇文章主要給大家介紹了Android實(shí)現(xiàn)壓縮字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

Android端可以對(duì)字符串進(jìn)行壓縮,我們?cè)谶M(jìn)行大量簡單文本傳輸時(shí),可以先壓縮字符串再發(fā)送。接收端接收后再解壓。也可以將字符串壓縮后存入數(shù)據(jù)庫中,下面話不多說了,來一起看看詳細(xì)的介紹吧。

使用到的類庫

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()使用平臺(tái)默認(rèn)編碼,也可以顯式的指定如toString("GBK")
  return out.toString();
 }
}

紅米手機(jī)測(cè)試輸出

08-09 13:16:53.388 32248-32267/com.rustfisher.ndkproj D/rustApp: 開始存入數(shù)據(jù)庫 ori1 len=304304
08-09 13:16:53.418 32248-32267/com.rustfisher.ndkproj D/rustApp: 已存入數(shù)據(jù)庫 ori1 len=304304 , 耗時(shí)約37 ms
08-09 13:16:53.418 32248-32267/com.rustfisher.ndkproj D/rustApp: 開始?jí)嚎s ori1 len=304304
08-09 13:16:53.438 32248-32267/com.rustfisher.ndkproj D/rustApp: 壓縮完畢 zip1 len=1112 , 耗時(shí)約19 ms
08-09 13:16:53.438 32248-32267/com.rustfisher.ndkproj D/rustApp: 存壓縮后的數(shù)據(jù)進(jìn)數(shù)據(jù)庫 zip1.length=1112
08-09 13:16:53.448 32248-32267/com.rustfisher.ndkproj D/rustApp: 壓縮后的數(shù)據(jù)已進(jìn)數(shù)據(jù)庫 zip1.length=1112 , 耗時(shí)約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: 解壓完畢 耗時(shí)約36 ms

存儲(chǔ)時(shí)間受存儲(chǔ)字符串的長度影響。字符串長度與存儲(chǔ)耗時(shí)正相關(guān)。

榮耀手機(jī)測(cè)試

08-09 10:38:42.759 23075-23109/com.rustfisher D/rustApp: 開始?jí)嚎s 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: 解壓完畢

此例中,榮耀壓縮耗時(shí)約5ms,解壓耗時(shí)約25ms。

可以看出,壓縮后與原長度之比 1112/304304, 約0.365%

壓縮和解壓縮耗時(shí)視手機(jī)情況而定。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android實(shí)現(xiàn)粒子中心擴(kuò)散動(dòng)畫效果

    Android實(shí)現(xiàn)粒子中心擴(kuò)散動(dòng)畫效果

    粒子動(dòng)畫效果相比其他動(dòng)畫來說是非常復(fù)雜了的,主要涉及三個(gè)方面,粒子初始化、粒子位移、粒子回收等問題,本篇將實(shí)現(xiàn)兩種動(dòng)畫效果,代碼基本相同,只是旋轉(zhuǎn)速度不一樣,需要的朋友可以參考下
    2024-02-02
  • 使用Android Studio Gradle實(shí)現(xiàn)友盟多渠道打包

    使用Android Studio Gradle實(shí)現(xiàn)友盟多渠道打包

    這篇文章主要介紹了使用Android Studio Gradle實(shí)現(xiàn)友盟多渠道打包,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 故事講解Activity生命周期(貓的一生)

    故事講解Activity生命周期(貓的一生)

    關(guān)于Android中Activity的生命周期,網(wǎng)上大多數(shù)文章基本都是直接貼圖、翻譯API,比較籠統(tǒng)含糊不清。本文主要用故事講解Activity生命周期。下面跟著小編一起來看下吧
    2017-03-03
  • Android6.0指紋識(shí)別開發(fā)實(shí)例詳解

    Android6.0指紋識(shí)別開發(fā)實(shí)例詳解

    這篇文章主要介紹了Android6.0指紋識(shí)別開發(fā)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Android?數(shù)據(jù)壓縮淺析

    Android?數(shù)據(jù)壓縮淺析

    這篇文章主要為大家介紹了Android?數(shù)據(jù)壓縮方法淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Android實(shí)現(xiàn)本地Service方法控制音樂播放

    Android實(shí)現(xiàn)本地Service方法控制音樂播放

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)本地Service方法控制音樂播放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Android實(shí)現(xiàn)新增及編輯聯(lián)系人的方法

    Android實(shí)現(xiàn)新增及編輯聯(lián)系人的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)新增及編輯聯(lián)系人的方法,是Android應(yīng)用開發(fā)常見的功能,需要的朋友可以參考下
    2014-07-07
  • Android實(shí)現(xiàn)懸浮窗體效果

    Android實(shí)現(xiàn)懸浮窗體效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)懸浮窗體效果,顯示懸浮窗口,窗口可以拖動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android編程動(dòng)態(tài)修改RelativeLayout寬高的方法

    Android編程動(dòng)態(tài)修改RelativeLayout寬高的方法

    這篇文章主要介紹了Android編程動(dòng)態(tài)修改RelativeLayout寬高的方法,涉及Android動(dòng)態(tài)布局的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • 一個(gè)Activity中多個(gè)Fragment的切換

    一個(gè)Activity中多個(gè)Fragment的切換

    經(jīng)常會(huì)遇到在一個(gè)activity界面上布局多個(gè)fragment,但是如何從一個(gè)fragment跳轉(zhuǎn)到另一個(gè)fragment呢?本文主要對(duì)一個(gè)Activity中多個(gè)Fragment的切換進(jìn)行介紹,下面跟著小編一起來看下吧
    2017-01-01

最新評(píng)論

体育| 平阴县| 南投县| 荔波县| 丰都县| 九江县| 扬州市| 泽普县| 双柏县| 延寿县| 于田县| 西乡县| 吉林市| 名山县| 开封县| 丁青县| 克山县| 邓州市| 株洲市| 礼泉县| 丘北县| 河曲县| 南宫市| 乐东| 兴和县| 乌兰浩特市| 惠州市| 滨州市| 醴陵市| 舒城县| 禹城市| 浮山县| 澄江县| 安阳县| 交城县| 定兴县| 加查县| 常山县| 洞头县| 丁青县| 富锦市|