Écrire des fichiers avec Node.js
Écrire un fichier
La façon la plus simple d'écrire dans des fichiers dans Node.js est d'utiliser l'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 {
// fichier écrit avec succès
}
})
Écrire un fichier de manière synchrone
Alternativement, vous pouvez utiliser la version synchrone fs.writeFileSync
:
const fs = require('node:fs')
const content = 'Some content!'
try {
fs.writeFileSync('/Users/joe/test.txt', content)
} catch (err) {
console.error(err)
}
Vous pouvez aussi utiliser la méthode fsPromises.writeFile()
basée sur les promises, offerte par le module 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()
Par défaut, cette API remplacera le contenu du fichier s'il existe déjà.
Vous pouvez modifier le comportement par défaut en spécifiant un drapeau :
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])
Les drapeaux que vous utiliserez probablement sont :
Drapeau | Description | Le fichier est créé s'il n'existe pas |
---|---|---|
r+ | Ce drapeau ouvre le fichier en lecture et en écriture | ❌ |
w+ | Ce drapeau ouvre le fichier en lecture et en écriture et positionne le flux au début du fichier | ✅ |
a | Ce drapeau ouvre le fichier en écriture et positionne le flux à la fin du fichier | ✅ |
a+ | Ce flux ouvre le fichier en lecture et en écriture et positionne le flux à la fin du fichier | ✅ |
Vous pouvez trouver plus d'informations sur les drapeaux dans la documentation fs.
Ajouter du contenu à un fichier
Ajouter du contenu à des fichiers est pratique lorsque vous ne voulez pas écraser un fichier avec un nouveau contenu, mais plutôt y ajouter du contenu.
Exemples
Une méthode pratique pour ajouter du contenu à la fin d'un fichier est fs.appendFile()
(et son équivalent fs.appendFileSync()
):
const fs = require('node:fs')
const content = 'Some content!'
fs.appendFile('file_log', content, err => {
if (err) {
console.error(err)
} else {
// done!
}
})
Exemple avec les Promises
Voici un exemple 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()