Writing files with Node.js
Writing a file
The easiest way to write to files in Node.js is to use the fs.writeFile() API.
javascript
const fs = require('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:
javascript
const fs = require('node:fs')
const content = 'Some content!'
try {
fs.writeFileSync('/Users/joe/test.txt', content)
} catch (err) {
console.error(err)
}You can also use the promise-based fsPromises.writeFile() method offered by the fs/promises module:
javascript
const fs = require('node:fs/promises')
async function example() {
try {
const content = 'Some content!'
await fs.writeFile('/Users/joe/test.txt', content)
} catch (err) {
console.log(err)
}
}
example()By default, this API will replace the contents of the file if it does already exist.
You can modify the default by specifying a flag:
javascript
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])The flags you'll likely use are:
| Flag | Description | File gets created if it doesn't exist |
|---|---|---|
r+ | This flag opens the file for reading and writing | ❌ |
w+ | This flag opens the file for reading and writing and it also positions the stream at the beginning of the file | ✅ |
a | This flag opens the file for writing and it also positions the stream at the end of the file | ✅ |
a+ | This stream opens the file for reading and writing and it also 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.
Examples
A handy method to append content to the end of a file is fs.appendFile() (and its fs.appendFileSync() counterpart):
javascript
const fs = require('node:fs')
const content = 'Some content!'
fs.appendFile('file_log', content, err => {
if (err) {
console.error(err)
} else {
// done!
}
})Example with Promises
Here's a fsPromises.appendFile() example:
javascript
const fs = require('node:fs/promises')
async function example() {
try {
const content = 'Some content!'
await fs.appendFile('/Users/joe/test.txt', content)
} catch (err) {
console.log(err)
}
}
example()