Skip to main content
writeFile - node__fs.d.ts - Node documentation
function writeFile

Usage in Deno

```typescript import { writeFile } from "node:node__fs.d.ts"; ```
writeFile(
data: string | ArrayBufferView,
callback: NoParamCallback,
): void
> [!WARNING] Deno compatibility > Missing `utf16le`, `latin1` and `ucs2` encoding. When `file` is a filename, asynchronously writes data to the file, replacing the file if it already exists. `data` can be a string or a buffer. When `file` is a file descriptor, the behavior is similar to calling `fs.write()` directly (which is recommended). See the notes below on using a file descriptor. The `encoding` option is ignored if `data` is a buffer. The `mode` option only affects the newly created file. See [open](../.././node__fs.d.ts/~/open) for more details. ```js import { writeFile } from 'node:fs'; import { Buffer } from 'node:buffer'; const data = new Uint8Array(Buffer.from('Hello Node.js')); writeFile('message.txt', data, (err) => { if (err) throw err; console.log('The file has been saved!'); }); ``` If `options` is a string, then it specifies the encoding: ```js import { writeFile } from 'node:fs'; writeFile('message.txt', 'Hello Node.js', 'utf8', callback); ``` It is unsafe to use `fs.writeFile()` multiple times on the same file without waiting for the callback. For this scenario, [createWriteStream](../.././node__fs.d.ts/~/createWriteStream) is recommended. Similarly to `fs.readFile` \- `fs.writeFile` is a convenience method that performs multiple `write` calls internally to write the buffer passed to it. For performance sensitive code consider using [createWriteStream](../.././node__fs.d.ts/~/createWriteStream). It is possible to use an `AbortSignal` to cancel an `fs.writeFile()`. Cancelation is "best effort", and some amount of data is likely still to be written. ```js import { writeFile } from 'node:fs'; import { Buffer } from 'node:buffer'; const controller = new AbortController(); const { signal } = controller; const data = new Uint8Array(Buffer.from('Hello Node.js')); writeFile('message.txt', data, { signal }, (err) => { // When a request is aborted - the callback is called with an AbortError }); // When the request should be aborted controller.abort(); ``` Aborting an ongoing request does not abort individual operating system requests but rather the internal buffering `fs.writeFile` performs.

Parameters

filename or file descriptor
data: string | ArrayBufferView
callback: NoParamCallback

Return Type

void
writeFile(
data: string | ArrayBufferView,
callback: NoParamCallback,
): void
> [!WARNING] Deno compatibility > Missing `utf16le`, `latin1` and `ucs2` encoding. Asynchronously writes data to a file, replacing the file if it already exists.

Parameters

A path to a file. If a URL is provided, it must use the `file:` protocol. If a file descriptor is provided, the underlying file will _not_ be closed automatically.
data: string | ArrayBufferView
The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
callback: NoParamCallback

Return Type

void