- D Cookbook
- Adam D. Ruppe
- 251字
- 2021-07-16 11:50:47
Using the std.zlib compression
Phobos provides a wrapper for the common zlib
/gzip
/DEFLATE
compression algorithm. This algorithm is used in the .zip
files, the .png
images, the HTTP protocol, the common gzip
utility, and more. With std.zlib
, we can both compress and decompress data easily.
How to do it…
Let's compress and decompress data by executing the following steps:
- Import
std.zlib
. - Create an instance of
Compress
orUnCompress
, depending on what direction you want to go. - Call the
compress
oruncompress
methods for each block of data, concatenating the pieces together as they are made. - Call
flush
to get the last block of data.
The code is as follows:
void main() { import std.zlib, std.file; auto compressor = new Compress(HeaderFormat.gzip); void[] compressedData; compressedData ~= compressor.compress("Hello, "); compressedData ~= compressor.compress("world!"); compressedData ~= compressor.flush(); std.file.write("compressed.gz", compressedData); }
Running the program will create a file, compressed.gz
, which can be unzipped to become a text file with Hello, world!
.
How it works…
The std.zlib
module doesn't follow exactly the same pattern as std.digest
(the implementation of std.zlib
was written before ranges were incorporated into Phobos), but it is a very simple API. It works with one block of data at a time, returning the compressed or uncompressed block. When finished, the flush
method clears any partial blocks, returning the final piece of data.
There are also convenience functions, compress
and uncompress
, that can perform the operation in a single function call if you have all the data available as a single array at once.
- Vue 3移動Web開發與性能調優實戰
- 零基礎學Scratch少兒編程:小學課本中的Scratch創意編程
- 新編Premiere Pro CC從入門到精通
- 教孩子學編程:C++入門圖解
- 程序設計基礎教程:C語言
- 硅谷Python工程師面試指南:數據結構、算法與系統設計
- FPGA Verilog開發實戰指南:基于Intel Cyclone IV(進階篇)
- Windows Embedded CE 6.0程序設計實戰
- 零基礎學Python編程(少兒趣味版)
- R Data Science Essentials
- Joomla!Search Engine Optimization
- 系統分析師UML用例實戰
- Mastering PostgreSQL 11(Second Edition)
- Microsoft Azure Security
- VBA Automation for Excel 2019 Cookbook