2013-07-11 8 views

Odpowiedz

10

Otwórz plik w trybie dopisywania pomocą a+ flagę

var fd = fs.openSync('file', 'a+'); 

lub użyć pozycyjną write. Aby móc dołączyć do końca pliku, użyj fs.appendFile:

fs.appendFile(fd, buf, err => { 
    // 
}); 

napisać do początku pliku:

fs.write(fd, buf, 0, buf.length, 0); 

EDIT:

Chyba nie ma jedna metoda wymaga tego. Ale możesz skopiować zawartość pliku, napisać nowe dane i dołączyć skopiowane dane.

var data = fs.readFileSync(file); //read existing contents into data 
var fd = fs.openSync(file, 'w+'); 
var buffer = new Buffer('New text'); 

fs.writeSync(fd, buffer, 0, buffer.length, 0); //write new data 
fs.writeSync(fd, data, 0, data.length, buffer.length); //append old data 
// or fs.appendFile(fd, data); 
fs.close(fd); 

Należy pamiętać, że należy użyć asynchroniczne wersje tych metod, jeżeli czynności te nie są wykonywane tylko raz podczas inicjalizacji, jak oni blokują pętlę zdarzeń.

+0

cześć c.P.u1 dziękuję za odpowiedź, ale to, czego chcę, to wstaw do początku pliku, nie dołączaj do końca pliku –

+0

fs.write (fd, buf, 0, buf.length, 0); nadpisze oryginalny tekst wewnątrz pliku nawet z 'a +' –

+0

@DevPiplay, przepraszam, źle zrozumiałem twoje pytanie. Sprawdź zaktualizowaną odpowiedź. –

1

Z małych plików można zrobić to tak:

let logPath = path.join(appPath, 'deploy.log'); 
let logRows = fs.readFileSync(logPath).toString().split('\n'); 

logRows.unshift('Your string here'); 
fs.writeFileSync(logPath, logRows.join('\n')); 

Mam nadzieję, że będzie użyteczny dla kogoś!

Powiązane problemy