Skip to content

Bun предоставляет API для инкрементальной записи в файл. Это полезно для записи больших файлов или для записи в файл в течение длительного периода времени.

Вызовите .writer() на BunFile для получения экземпляра FileSink. Этот экземпляр может использоваться для эффективной буферизации данных и периодической «сброса» их на диск. Вы можете записывать и сбрасывать много раз.

ts
const file = Bun.file("/path/to/file.txt");
const writer = file.writer();

writer.write("lorem");
writer.write("ipsum");
writer.write("dolor");

writer.flush();

// продолжить запись и сброс

Метод .write() может принимать строки или бинарные данные.

ts
w.write("hello");
w.write(Buffer.from("there"));
w.write(new Uint8Array([0, 255, 128]));
writer.flush();

FileSink также будет автоматически сбрасывать данные, когда его внутренний буфер заполнен. Вы можете настроить размер буфера с помощью опции highWaterMark.

ts
const file = Bun.file("/path/to/file.txt");
const writer = file.writer({ highWaterMark: 1024 * 1024 }); // 1MB

Когда вы закончите запись в файл, вызовите .end() для автоматического сброса буфера и закрытия файла.

ts
writer.end();

Полная документация: FileSink.

Bun от www.bunjs.com.cn