Ich möchte ein einfaches Log-System erstellen, das eine Zeile vor der letzten Zeile in eine TXT-Datei mit Node.js druckt, aber ich weiß nicht, wie das Dateisystem aus Node.js funktioniert. Kann es jemand erklären?Node.js Schreibe eine Zeile in eine .txt-Datei
Antwort
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 einige Textdatei anhängen ist build-in verwenden fs.appendFile(filename, data[, options], callback)
function von fs
module:
var fs = require('fs')
fs.appendFile('log.txt', 'new data', function (err) {
if (err) {
// append failed
} else {
// done
}
})
Aber wenn Sie möchten, Daten schreiben Datei mehrmals anmelden, dann wird es am besten sein, verwenden fs.createWriteStream(path[, options])
function statt:
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
Knoten werden immer wieder neue Daten auf Ihre Datei .write
jedes Mal anhängt Sie rufen werden, bis die Anwendung geschlossen wird, oder bis Sie den Stream manuell schließen werde cal .end
ling:
logger.end() // close string
Es ist notwendig zu speichern die Datei ? Wenn ich fs.appendFile verwende, ist die Datei noch leer? – Meterion
'appendFile' wird die Textdatei öffnen, neue Daten anhängen und anschließend speichern. Also, nein, Sie müssen es nicht selbst speichern. Wenn Ihre Datei leer ist, versuchen Sie 'err' im' appendFile' Callback zu überprüfen. –
Danke für die Erwähnung sowohl der einmaligen als auch der mehrfachen Zeitoptionen. –
Einfach fs
Modul und so etwas wie folgt verwenden:
fs.appendFile('server.log', 'string to append', function (err) {
if (err) return console.log(err);
console.log('Appended!');
});
Wenn Sie eine Protokollsystem implementieren möchten, würde ich Ihnen empfehlen, einen Blick auf Bunyan Paket zu nehmen.
Schritt 1
Wenn Sie eine kleine Datei Lesen Sie alle Dateidaten in den Speicher
Schritt 2
Datei konvertieren Datenstring in Array
Schritt 3
Suchendas Array einen Ort zu finden, wo Sie den Text
Schritt 4
einfügen wollen Sobald Sie den Speicherort für Ihren Text einfügen
yourArray.splice(index,0,"new added test");
Schritt 5
konvertieren Sie Ihr Array in Zeichenfolge
yourArray.join("");
Schritt 6
schreiben Sie Ihre Datei wie so
fs.createWriteStream(yourArray);
Dies wird empfohlen, nicht wenn die Datei zu groß ist
Also, Sie eine Linie in der Mitte eingefügt werden soll von eine Textdatei, oder?Es wird viel einfacher sein, Strings an das Ende anzuhängen. –
Ja, ok Wie kann ich am Ende eine Zeichenfolge anhängen? – Meterion
Mögliches Duplikat von [Wie an eine Datei im Knoten anhängen?] (Http://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –