- 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.
- Apache ZooKeeper Essentials
- Django開發從入門到實踐
- Web Development with Django Cookbook
- R的極客理想:工具篇
- PHP 7+MySQL 8動態網站開發從入門到精通(視頻教學版)
- C語言程序設計與應用(第2版)
- 深度探索Go語言:對象模型與runtime的原理特性及應用
- Everyday Data Structures
- Qlik Sense? Cookbook
- 從零開始學Python大數據與量化交易
- Laravel Design Patterns and Best Practices
- Mastering Machine Learning with scikit-learn
- Mastering Unity 2017 Game Development with C#(Second Edition)
- Puppet Cookbook(Third Edition)
- Expert Cube Development with SSAS Multidimensional Models