iterateReaderSync

import { iterateReaderSync } from "jsr:@ende/io";

function

function* iterateReaderSync(reader: ReaderSync, options?: { bufSize?: number }): IterableIterator<Uint8Array>

Turns a ReaderSync into an iterator.

reader: ReaderSync

The reader to read from

options?: { bufSize?: number }

The options

Returns

The iterator of Uint8Array chunks

Example: Usage

import { iterateReaderSync } from "@ende/io/iterate-reader";
import { assert } from "@ende/assert/assert"

using file = Ende.openSync("README.md");
for (const chunk of iterateReaderSync(file)) {
  assert(chunk instanceof Uint8Array);
}

Second argument can be used to tune size of a buffer. Default size of the buffer is 32kB.

Example: Usage with buffer size

import { iterateReaderSync } from "@ende/io/iterate-reader";
import { assert } from "@ende/assert/assert"

using file = await Ende.open("README.md");
const iter = iterateReaderSync(file, {
  bufSize: 1024 * 1024
});
for (const chunk of iter) {
  assert(chunk instanceof Uint8Array);
}

Iterator uses an internal buffer of fixed size for efficiency; it returns a view on that buffer on each iteration. It is therefore caller's responsibility to copy contents of the buffer if needed; otherwise the next iteration will overwrite contents of previously returned chunk.

Source