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
risposta
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
È necessario salvare il file ? Se utilizzo fs.appendFile, il file è ancora vuoto? – Meterion
'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'. –
Grazie per aver menzionato entrambe le opzioni una tantum e multiple. –
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!');
});
Se si desidera implementare un sistema di registro, vi consiglio di dare un'occhiata al Bunyan pacchetto.
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
Quindi, si vuole inserire una riga in mezzo un file di testo, giusto?Sarà molto più facile aggiungere le stringhe alla fine. –
Sì, ok come posso aggiungere una stringa alla fine? – Meterion
Possibile duplicato di [Come aggiungere un file nel nodo?] (Http://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –