web-dev-qa-db-fra.com

Node.js Écrire une ligne dans un fichier .txt

Je veux créer un système de journalisation simple, qui affiche une ligne avant la ligne précédente dans un fichier txt en utilisant Node.js, mais je ne sais pas comment fonctionne le système de fichiers de Node.js. Quelqu'un peut-il l'expliquer?

29
Meterion

L'insertion de données au milieu d'un fichier texte n'est pas une tâche simple. Si possible, vous devriez l'ajouter à la fin de votre fichier.

Le moyen le plus simple d’ajouter des données dans un fichier texte est d’utiliser le module fs.appendFile(filename, data[, options], callback) intégré from fs module :

var fs = require('fs')
fs.appendFile('log.txt', 'new data', function (err) {
  if (err) {
    // append failed
  } else {
    // done
  }
})

Mais si vous souhaitez écrire plusieurs fois des données dans le fichier journal, il vaut mieux utiliser fs.createWriteStream(path[, options]) fonction à la place:

var fs = require('fs')
var logger = fs.createWriteStream('log.txt', {
  flags: 'a' // 'a' means appending (old data will be preserved)
})

logger.write('some data') // append string to your file
logger.write('more data') // again
logger.write('and more') // again

Node continuera à ajouter de nouvelles données à votre fichier chaque fois que vous appelez .write, jusqu'à ce que votre application soit fermée ou jusqu'à ce que vous fermiez manuellement le flux appelant .end:

logger.end() // close string
71
Leonid Beschastny

Étape 1

Si vous avez un petit fichierLisez toutes les données du fichier dans la mémoire

Étape 2

Convertir une chaîne de données de fichier en tableau

Étape 3

Rechercher dans le tableau pour trouver un emplacement où vous souhaitez insérer le texte

Étape 4

Une fois que vous avez l'emplacement, insérez votre texte

yourArray.splice(index,0,"new added test");

Étape 5

convertir votre tableau en chaîne

yourArray.join("");

Étape 6

écrivez votre fichier comme ça

fs.createWriteStream(yourArray);

Ce n'est pas conseillé si votre fichier est trop gros 

2
Yene Mulatu

Utilisez simplement le module fs et quelque chose comme ceci:

fs.appendFile('server.log', 'string to append', function (err) {
   if (err) return console.log(err);
   console.log('Appended!');
});
2
michelem

J'ai créé un fichier journal qui affiche les données dans un fichier texte à l'aide du journal "Winston". Le code source est ci-dessous,

const { createLogger, format, transports } = require('winston');
var fs = require('fs')
var logger = fs.createWriteStream('Data Log.txt', {`
flags: 'a' 
})
const os = require('os');
var sleep = require('system-sleep');
var endOfLine = require('os').EOL;
var t = '             ';var s = '         ';var q = '               ';
var array1=[];
var array2=[];
var array3=[];
var array4=[];

array1[0]  =  78;`
array1[1]  =  56;
array1[2]  =  24;
array1[3]  =  34;

for (var n=0;n<4;n++)
{
array2[n]=array1[n].toString();
}

for (var k=0;k<4;k++)
{
array3[k]=Buffer.from('                    ');
}

for (var a=0;a<4;a++)  
{
array4[a]=Buffer.from(array2[a]);
}

for (m=0;m<4;m++)
{
array4[m].copy(array3[m],0);
}

logger.write('Date'+q);
logger.write('Time'+(q+'  '))
logger.write('Data 01'+t);
logger.write('Data 02'+t); 
logger.write('Data 03'+t);
logger.write('Data 04'+t)

logger.write(endOfLine);
logger.write(endOfLine);
enter code here`enter code here`
}

function mydata()      //user defined function
{
logger.write(datechar+s);
logger.write(timechar+s);
for ( n = 0; n < 4; n++) 
{
logger.write(array3[n]);
}
logger.write(endOfLine); 
}

for (;;)
}
var now = new Date();
var dateFormat = require('dateformat');
var date = dateFormat(now,"isoDate");
var time = dateFormat(now, "h:MM:ss TT ");
var datechar = date.toString();
var timechar = time.toString();
mydata();
sleep(5*1000);
}
0
ISURU THIWANKA