Gravando arquivos com Node.js
O jeito mais fácil de escrever em arquivos com Node.js é utilizando a API fs.writeFile()
.
Exemplo:
const fs = require('fs')const content = 'Some content!'fs.writeFile('/Users/pauloluan/test.txt', content, err => {if (err) {console.error(err)return}// arquivo escrito com sucesso})
Alternativamente, você pode usar a versão síncrona, fs.writeFileSync()
:
const fs = require('fs')const content = 'Some content!'try {const data = fs.writeFileSync('/Users/pauloluan/test.txt', content)// arquivo escrito com sucesso} catch (err) {console.error(err)}
Por padrão, essa API vai apagar o conteúdo do arquivo se ele existir. By default, this API will replace the contents of the file if it does already exist.
Você pode modificar o comportamento padrão especificando uma flag:
fs.writeFile('/Users/pauloluan/test.txt', content, { flag: 'a+' }, err => {})
As flags que você normalmente utilizará são
r+
abre o arquivo para leitura e escritaw+
abre o arquivo para leitura e escrita, posicionando a stream no início do arquivo. O arquivo é criado se não existira
abre o arquivo para escrita, posicionando a stream no fim do arquivo. O arquivo é criado se não existira+
abre o arquivo para leitura e escrita, posicionando a stream no fim do arquivo. O arquivo é criado se não existir
(você pode encontrar mais flags em https://nodejs.org/api/fs.html#fs_file_system_flags)
Acrescentar conteúdo em um arquivo
Um método muito útil acrescentar conteúdo no fim de um arquivo é o fs.appendFile()
(e sua contraparte fs.appendFileSync()
):
const content = 'Some content!'fs.appendFile('file.log', content, err => {if (err) {console.error(err)return}// feito!})
Usando streams
Todos esses métodos escrevem o conteúdo completo no arquivo antes de retornarem o controle de volta ao programa (na versão assíncrona, isso significa executar a callback)
Nesse caso, uma opção melhor é escrever o conteúdo do arquivo usando streams.