wake-up-neo.net

Node.js Schreiben Sie eine Zeile in eine TXT-Datei

Ich möchte ein einfaches Protokollsystem erstellen, das eine Zeile vor der letzten Zeile mithilfe von Node.js in eine TXT-Datei druckt, aber ich weiß nicht, wie das Dateisystem von Node.js funktioniert. Kann das jemand erklären?

29
Meterion

Das Einfügen von Daten in die Mitte einer Textdatei ist keine einfache Aufgabe. Wenn möglich, sollten Sie es an das Ende Ihrer Datei anhängen.

Der einfachste Weg, Daten an eine Textdatei anzuhängen, ist das eingebaute fs.appendFile(filename, data[, options], callback) function aus fs module :

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

Wenn Sie jedoch mehrmals Daten in die Protokolldatei schreiben möchten, verwenden Sie stattdessen fs.createWriteStream(path[, options]) function :

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 fügt bei jedem Aufruf von .write neue Daten an Ihre Datei an, bis Ihre Anwendung geschlossen wird oder bis Sie den Stream manuell schließen und .end aufrufen:

logger.end() // close string
71

Schritt 1

Wenn Sie eine kleine Datei habenLesen Sie alle Dateidaten in den Speicher

Schritt 2

Konvertieren Sie den Dateidatenstring in ein Array

Schritt 3

Durchsuchen Sie das Array nach einem Ort, an dem Sie den Text einfügen möchten

Schritt 4

Sobald Sie den Ort haben, fügen Sie Ihren Text ein

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

Schritt 5

wandle dein Array in einen String um

yourArray.join("");

Schritt 6

schreibe deine Datei so

fs.createWriteStream(yourArray);

Dies wird nicht empfohlen, wenn Ihre Datei zu groß ist 

2
Yene Mulatu

Verwenden Sie einfach das Modul fs und so etwas:

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

Ich habe eine Protokolldatei erstellt, die Daten mithilfe des "Winston" -Protokolls in eine Textdatei druckt. Der Quellcode ist hier unten,

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