2015-10-29 4 views
19

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

+0

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. –

+0

Ja, ok Wie kann ich am Ende eine Zeichenfolge anhängen? – Meterion

+0

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) –

Antwort

48

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 
+0

Es ist notwendig zu speichern die Datei ? Wenn ich fs.appendFile verwende, ist die Datei noch leer? – Meterion

+0

'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. –

+0

Danke für die Erwähnung sowohl der einmaligen als auch der mehrfachen Zeitoptionen. –

1

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!'); 
}); 
0

Wenn Sie eine Protokollsystem implementieren möchten, würde ich Ihnen empfehlen, einen Blick auf Bunyan Paket zu nehmen.

1

Schritt 1

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

Schritt 2

Datei konvertieren Datenstring in Array

Schritt 3

Suchen

das 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