2015-10-29 10 views
19

Voglio creare un semplice sistema di registro, che stampa una riga prima della linea passata in un file txt utilizzando Node.js, ma non so come il File System da Node.js funziona. Qualcuno può spiegarlo?Node.js Scrivere una riga in un file .txt

+0

Quindi, si vuole inserire una riga in mezzo un file di testo, giusto?Sarà molto più facile aggiungere le stringhe alla fine. –

+0

Sì, ok come posso aggiungere una stringa alla fine? – Meterion

+0

Possibile duplicato di [Come aggiungere un file nel nodo?] (Http://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –

risposta

48

L'inserimento di dati nel mezzo di un file di testo non è un'operazione semplice. Se possibile, dovresti aggiungerlo alla fine del tuo file.

Il modo più semplice per aggiungere dati alcuni file di testo è quello di utilizzare build-in fs.appendFile(filename, data[, options], callback) function da fs module:

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

Ma se si vuole scrivere i dati del file di registro più volte, allora sarà meglio utilizzare fs.createWriteStream(path[, options]) function invece:

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 

Nodo manterrà aggiungendo nuovi dati al file ogni volta che si chiamerai .write, fino a quando l'applicazione verrà chiusa, o fino a quando non ti chiudere manualmente il flusso cal ling .end:

logger.end() // close string 
+0

È necessario salvare il file ? Se utilizzo fs.appendFile, il file è ancora vuoto? – Meterion

+0

'appendFile' aprirà il file di testo, aggiungerà nuovi dati ad esso e lo salverà in seguito. Quindi no, non è necessario salvarlo da soli. Se il tuo file è vuoto, prova a controllare 'err' nel callback' appendFile'. –

+0

Grazie per aver menzionato entrambe le opzioni una tantum e multiple. –

1

sufficiente utilizzare fs modulo e qualcosa di simile:

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

Se si desidera implementare un sistema di registro, vi consiglio di dare un'occhiata al Bunyan pacchetto.

1

Fase 1

Se si dispone di un piccolo file Leggi tutte i dati del file in memoria

Fase 2

Converti file stringa di dati in array

Passaggio 3

ricerca nella matrice di trovare una posizione in cui si desidera inserire il testo

Fase 4

Una volta che hai la posizione inserire il testo

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

Fase 5

convertire la matrice in stringa

yourArray.join(""); 

Passo 6

scrivere il file in questo modo

fs.createWriteStream(yourArray); 

Questo non è consigliato se il file è troppo grande