- 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.
- ClickHouse性能之巔:從架構設計解讀性能之謎
- Java EE 6 企業級應用開發教程
- PHP程序設計(慕課版)
- JavaScript+jQuery網頁特效設計任務驅動教程(第2版)
- Internet of Things with the Arduino Yún
- Java EE 7 Development with NetBeans 8
- Mastering JavaScript High Performance
- 新一代SDN:VMware NSX 網絡原理與實踐
- Python程序設計與算法基礎教程(第2版)(微課版)
- Odoo 10 Implementation Cookbook
- Getting Started with Nano Server
- Nagios Core Administration Cookbook(Second Edition)
- ASP.NET 4.0 Web程序設計
- C#面向對象程序設計(第2版)
- Learning Kotlin by building Android Applications