Class Specialization
BZ2 File Stream
Wrapper for BZFILE * streams from bzlib.
BZ2 File Stream |
Include Headers
seqan/stream.h
Remarks
This is only available if SEQAN_HAS_ZLIB is set to 1.
Not copy constructable.
Follows the RIIA pattern when the file is opened through open (and thus the underlying BZFILE * and FILE * are owned).
Can be used as a wrapper around a BZFILE * or create such an object itself through open.
Also see the constructor.
Specialization of
Member Functions
Constructor |
Functions
Determines whether an iterator is at the end position. (Stream) | |
Closes a file. (Stream) | |
Opens a file, stream, or persistent string. (Stream) |
Examples
It is easy to open a BZ2 file via open.
Stream<BZ2File> bzStream;
open(bzStream, "/path/to/file.txt.bz2", "r"); // binary is implicit
// Now, work with bzStream. The object will close the file on destruction.
You can also use BZ2 File Stream as a wrapper around BZFILE * .
In this case, we have to deal with the verbose code for opening FILE * and BZFILE * by hand.
#include <bzlib.h>
#include <seqan/stream.h>
// Open normal FILE *, BZFILE * above, and Stream<BZ2File> on top.
FILE * f = fopen("/path/to/file.txt.bz2", "rb");
SEQAN_ASSERT(f != NULL);
int err = BZ_OK;
BZFILE * f2 = BZ2_bzReadOpen(&err, f, 0, 0, NULL, 0);
SEQAN_ASSERT_EQ(err, BZ_OK);
Stream<BZ2File> bzStream(f2);
// Now, you can work with the stream bzStream.
// Note that you only have to close f2 and f, not bzStream.
BZ2_bzReadClose(&err, f2);
SEQAN_ASSERT_EQ(err, BZ_OK);
fclose(f);
SeqAn - Sequence Analysis Library - www.seqan.de