rawFileStream

一度に巨大なファイルを読み込むことに特化した,バッファ持ち入力ストリームです。

rawFileStream
(
T
)
(
string filename
,
size_t bufferSize = 1024 * 1024
)
if (
is(Unqual!T == T)
)

Examples

immutable fname = "testData.dat";
std.file.write(fname, cast(ubyte[])[0, 1, 2, 3, 4, 5]); // 6byte
scope(exit)
    std.file.remove(fname);

auto sig1 = rawFileStream!int(fname);
static assert(isInputStream!(typeof(sig1)));
static assert(isInplaceComputableStream!(typeof(sig1)));
static assert(isBufferedInputStream!(typeof(sig1)));

assert(sig1.availables.length == 1);
sig1.consume(1);
assert(sig1.empty && sig1.fetch());
immutable fname = "testData.dat";
std.file.write(fname, [0, 1, 2, 3, 4, 5]); // 24byte
scope(exit)
    std.file.remove(fname);

auto sig1 = rawFileStream!int(fname);
assert(sig1.availables == [0, 1, 2, 3, 4, 5]);
sig1.consume(6);
assert(sig1.empty && sig1.fetch());

Meta