一个用于创建和解压zlib压缩格式的库
Translated by AI, submit an issue feedback
![]()
本仓库支持zlib、DEFLATE、gzip格式压缩和解压缩
特性
- 🚀 支持DEFLATE、zlib、gzip格式压缩方式
- 💪 支持DEFLATE、zlib、gzip流式压缩和解压
- 🚀 支持DEFLATE、zlib设置字典压缩和解压
- 🚀 支持解压时自动识别格式解压
![]()
源码目录:
.
├── README.md
├── doc
│ ├── assets
│ ├── cjcov
│ ├── design.md
│ ├── feature_api.md
├── src
│ └── deflate.cj
│ └── inflate.cj
│ └── stream.cj
│ └── zlib.cj
│ └── zutil.cj
└── test
├── HLT
├── LLT
└── UT
doc存放库的设计文档、提案、库的使用文档、LLT 用例覆盖报告src存放库源码的目录test存放测试用例,包括 HLT 用例、LLT 用例和 UT 用例
类和接口说明:
详情见 API
![]()
编译
cjpm build
功能示例
zlib 使用示例
import cangjie_tpc::zlib4cj.*
import std.collection.*
import std.io.*
import std.os.posix.*
import std.fs.*
main() {
let in_ = File("10MB.txt", OpenMode.Read)
let outFile = File("10MB.txt2", OpenMode.ReadWrite)
let compress = ZlibInputStream(in_)
let decompress = AutoDecompressOutputStream(outFile)
let buffer = Array<Byte>(1024, repeat: 0) // 1MB buffer
while (true) {
let bytesRead = compress.read(buffer)
if (bytesRead <= 0) {
break
}
decompress.write(buffer[0 .. bytesRead])
}
decompress.flush()
decompress.close()
compress.close()
in_.seek(SeekPosition.Begin(0))
outFile.seek(Begin(0))
println("in size: ${in_.length}, out size: ${outFile.length}")
}
运行结果如下:
0
约束与限制
-
暂时不支持level等于0的压缩场景,为0时可能存在未预期的错误
-
在下述版本验证通过: Cangjie Version: 1.0.0
开源协议
本项目基于 个人:(C) 1995-2022 Jean-loup Gailly and Mark Adler ,请自由地享受和参与开源。
![]()
欢迎给我们提交 PR,欢迎给我们提交 issue,欢迎参与任何形式的贡献。 ,