Есть несколько способов записать файл в Deno, все они требуют флага --allow-write
и будут throw
в случае возникновения ошибки, поэтому вы должны правильно обрабатывать ошибки.
Этот API принимает Uint8Array
, а не строку , причину, по которой вы получаете эту ошибку. Также требуется необязательный объект WriteFileOptions
const res = await fetch('http://example.com/image.png');
const imageBytes = new Uint8Array(await res.arrayBuffer());
await Deno.writeFile('./image.png', imageBytes);
. Также существует синхронный API (он блокирует событие l oop, как это происходит в Node.js).
Deno.writeFileSync('./image.png', imageBytes);
Запись строк
Если вы хотите записать в текстовый файл и получить строку, проще всего использовать Deno.writeTextFile
или writeFileStr
из std/fs
.
await Deno.writeTextFile('./file.txt', 'some content');
// or if you want sync API
Deno.writeTextFileSync('./file.txt', 'some content');
// import { writeFileStr, writeFileStrSync } from 'https://deno.land/std/fs/mod.ts'
import { writeFileStr, writeFileStrSync } from 'https://deno.land/std/fs/write_file_str.ts'
await writeFileStr('./file.txt', 'some content');
writeFileStrSync('./file.txt', 'some content');
Вы также можете использовать Deno.writeFile
с TextEncoder
.
const encoder = new TextEncoder(); // to convert a string to Uint8Array
await Deno.writeFile('./file.txt', encoder.encode('some content'));
API низкого уровня
Использование Deno.open
и Deno.writeAll
(или Deno.writeAllSync
)
const file = await Deno.open('./image.png', { write: true, create: true });
/* ... */
await Deno.writeAll(file, imageBytes);
file.close(); // You need to close it!
См. OpenOptions
здесь . Если вы хотите добавить, вы должны сделать:
{ append: true }
И вы также можете использовать API даже более низкого уровня, такие как Deno.write
или Writer.write