Flutter Gzip 編碼與解碼 Dart Gzip 工具類操作

早起的年輕人發表於2021-07-15

在百度百科中有提到

Gzip是若干種檔案壓縮程式的簡稱,通常指GNU計劃的實現,此處的gzip代表GNU zip。也經常用來表示gzip這種檔案格式,軟體的作者是Jean-loup Gailly和Mark Adler

GZIP最早由Jean-loup Gailly和Mark Adler建立,用於UNⅨ系統的檔案壓縮。我們在Linux中經常會用到字尾為.gz的檔案,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種資料壓縮格式,或者說一種檔案格式

在當下的 http 傳輸協議中,也會使用到 gzip,簡單點來說 gzip 可以一定程度上對傳輸的資料進行壓縮,然後提升傳輸的速度.

如果你有興趣 你可以關注一下公眾號 biglead 來獲取最新的學習資料。


Flutter 完全採取了 Dart ,在 Dart 中,也可使用 gzip 。

import 'dart:convert';
import 'package:archive/archive.dart';
複製程式碼

測試用例

void main() {
  
  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
    print("Gzip壓縮");

    //原始字串
    String myString = 'myString';
    //gzip 壓縮後的文字
    String zipString = gzipEncode(myString);

    print("gzip 編碼-$zipString");

    //gzip 解壓
    String zipString2 = gzipDencode(zipString);

    print("gzip 解編碼-$zipString2");
  });
}
複製程式碼

日誌控制檯輸出如下 在這裡插入圖片描述 GZIP 壓縮


///GZIP 壓縮
String gzipEncode(String str) {
  //先來轉換一下
  List<int> stringBytes = utf8.encode(str);
  //然後使用 gzip 壓縮
  List<int> gzipBytes = new GZipEncoder().encode(stringBytes);
  //然後再編碼一下進行網路傳輸
  String compressedString = base64UrlEncode(gzipBytes);
  return compressedString;
}
複製程式碼

GZIP 解壓縮

///GZIP 解壓縮
String gzipDencode(String str) {
  //先來解碼一下
  List<int> stringBytes = base64Url.decode(str);
  //然後使用 gzip 壓縮
  List<int> gzipBytes = new GZipDecoder().decodeBytes(stringBytes);
  //然後再編碼一下
  String compressedString = utf8.decode(gzipBytes);
  return compressedString;
}
複製程式碼

相關文章