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.