Read and write gzip files easily.

Vladimir Panteleev vladimir at thecybershadow.net
Wed Feb 19 15:08:31 PST 2014


On Wednesday, 19 February 2014 at 16:36:29 UTC, Adam D. Ruppe 
wrote:
> On Wednesday, 19 February 2014 at 16:27:32 UTC, Artem Tarasov 
> wrote:
>> Unfortunately, there's no standard module for processing 
>> gzip/bz2.
>
> std.zlib handles gzip but it doesn't present a file nor range 
> interface over it.
>
> This will work though:
>
> void main() {
>         import std.zlib;
>         import std.stdio;
>         auto uc = new UnCompress();
>
>         foreach(chunk; File("testd.gz").byChunk(1024)) {
>                 auto uncompressed = uc.uncompress(chunk);
>                 writeln(cast(string) uncompressed);
>         }
>
>         // also look at anything left in the buffer
>         writeln(cast(string) uc.flush());
> }
>

Regrettably, the above code has a bug. Currently, std.zlib stores 
a reference to the buffer passed to it, and since byChunk reuses 
the buffer, the code will fail when uncompressing multiple chunks.


More information about the Digitalmars-d mailing list