Escrevendo arquivos com Node.js
Escrevendo um arquivo
A maneira mais fácil de escrever em arquivos no Node.js é usar a API fs.writeFile()
.
const fs = require('node:fs')
const content = 'Some content!'
fs.writeFile('/Users/joe/test.txt', content, err => {
if (err) {
console.error(err)
} else {
// arquivo escrito com sucesso
}
})
Escrevendo um arquivo sincronicamente
Alternativamente, você pode usar a versão síncrona fs.writeFileSync
:
const fs = require('node:fs')
const content = 'Some content!'
try {
fs.writeFileSync('/Users/joe/test.txt', content)
} catch (err) {
console.error(err)
}
Você também pode usar o método fsPromises.writeFile()
baseado em promises oferecido pelo módulo fs/promises
:
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()
Por padrão, esta API substituirá o conteúdo do arquivo se ele já existir.
Você pode modificar o padrão especificando uma flag:
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])
As flags que você provavelmente usará são:
Flag | Descrição | Arquivo é criado se não existir |
---|---|---|
r+ | Esta flag abre o arquivo para leitura e escrita | ❌ |
w+ | Esta flag abre o arquivo para leitura e escrita e também posiciona o stream no início do arquivo | ✅ |
a | Esta flag abre o arquivo para escrita e também posiciona o stream no final do arquivo | ✅ |
a+ | Este stream abre o arquivo para leitura e escrita e também posiciona o stream no final do arquivo | ✅ |
Você pode encontrar mais informações sobre as flags na documentação do fs.
Adicionando conteúdo a um arquivo
Adicionar conteúdo a arquivos é útil quando você não quer sobrescrever um arquivo com novo conteúdo, mas sim adicioná-lo.
Exemplos
Um método prático para adicionar conteúdo ao final de um arquivo é fs.appendFile()
(e seu equivalente fs.appendFileSync()
):
const fs = require('node:fs')
const content = 'Some content!'
fs.appendFile('file_log', content, err => {
if (err) {
console.error(err)
} else {
// done!
}
})
Exemplo com Promises
Aqui está um exemplo de fsPromises.appendFile()
:
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()