在百度百科中有提到
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 可以一定程度上对传输的数据进行压缩,然后提升传输的速度.
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;
}