Skip to main content

Writing a file

The easiest way to write to files in Node.js is to use the fs.writeFile() API.
import fs from 'node:fs';

const content = 'Some content!';

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err);
  } else {
    // file written successfully
  }
});

Writing a file synchronously

Alternatively, you can use the synchronous version fs.writeFileSync():
import fs from 'node:fs';

const content = 'Some content!';

try {
  fs.writeFileSync('/Users/joe/test.txt', content);
  // file written successfully
} catch (err) {
  console.error(err);
}
You can also use the promise-based fsPromises.writeFile() method offered by the fs/promises module:
import fs from 'node:fs/promises';

try {
  const content = 'Some content!';
  await fs.writeFile('/Users/joe/test.txt', content);
} catch (err) {
  console.log(err);
}
By default, this API will replace the contents of the file if it already exists.

Specifying a flag

You can modify the default behavior by specifying a flag:
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => {});
The flags you’ll likely use are:
FlagDescriptionFile gets created if it doesn’t exist
r+Opens the file for reading and writing
w+Opens the file for reading and writing and positions the stream at the beginning of the file
aOpens the file for writing and positions the stream at the end of the file
a+Opens the file for reading and writing and positions the stream at the end of the file
You can find more information about the flags in the fs documentation.

Appending content to a file

Appending to files is handy when you don’t want to overwrite a file with new content, but rather add to it. A handy method to append content to the end of a file is fs.appendFile() (and its fs.appendFileSync() counterpart):
import fs from 'node:fs';

const content = 'Some content!';

fs.appendFile('file.log', content, err => {
  if (err) {
    console.error(err);
  } else {
    // done!
  }
});

Example with promises

Here is a fsPromises.appendFile() example:
import fs from 'node:fs/promises';

try {
  const content = 'Some content!';
  await fs.appendFile('/Users/joe/test.txt', content);
} catch (err) {
  console.log(err);
}

Build docs developers (and LLMs) love