612 votes

Comment ajouter à un fichier dans Node?

J'essaie d' ajouter une chaîne à un fichier journal. Cependant, writeFile effacera le contenu à chaque fois avant d'écrire la chaîne.

 fs.writeFile('log.txt', 'Hello Node', function (err) {
  if (err) throw err;
  console.log('It\'s saved!');
}); // => message.txt erased, contains only 'Hello Node'
 

Une idée de comment le faire facilement?

RÉPONSE: J'ai trouvé la réponse moi-même:

 var log = fs.createWriteStream('log.txt', {'flags': 'a'});
// use {'flags': 'a'} to append and {'flags': 'w'} to erase and write a new file
log.write("this is a message");
 

Daniel

949voto

denysonique Points 3215
fs.appendFile('message.txt', 'data to append', function (err) {

});

135voto

quartzo Points 431

Votre code utilisant createWriteStream crée un descripteur de fichier pour chaque écriture. log.end est meilleur car il demande au noeud de se fermer immédiatement après l'écriture.

 var log = fs.createWriteStream('log.txt', {'flags': 'a'});
// use {'flags': 'a'} to append and {'flags': 'w'} to erase and write a new file
log.end("this is a message");
 

23voto

Corey Hart Points 3238

Vous avez besoin de l'ouvrir, puis écrire.

var fs = require('fs'), str = 'string to append to file';
fs.open('filepath', 'a', 666, function( e, id ) {
  fs.write( id, 'string to append to file', null, 'utf8', function(){
    fs.close(id, function(){
      console.log('file closed');
    });
  });
});

Voici quelques liens qui pourront vous expliquer les paramètres

ouvert
écrire
fermer


EDIT: Cette réponse n'est plus valide, regarder dans le nouveau fs.appendFile méthode pour l'ajout.

14voto

chbrown Points 1517

Le noeud 0.8 a fs.appendFile :

 fs.appendFile('message.txt', 'data to append', function (err) {
  if (err) throw err;
  console.log('The "data to append" was appended to file!');
});
 

Docs: http://nodejs.org/docs/latest/api/fs.html#fs_fs_appendfile_filename_data_encoding_utf8_callback

4voto

Luis R. Points 465
fd = fs.openSync(path.join(process.cwd(), 'log.txt'), 'a')
fs.writeSync(fd, 'contents to append')
fs.closeSync(fd)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X