Próbowałem odczytać plik wiersz po wierszu i wyprowadzić go do innego pliku, używając pliku Node.js.Node.js odczytywanie i zapisywanie wierszy pliku
Mój problem polega na tym, że linie czasami są pomieszane ze względu na asynchroniczną naturę Node.js.
np mój plik wejściowy jest jak: linia 1 linia 2 linia 3
ale plik wynikowy może być tak: linii 1 linia 3 linii 2
Poniżej jest mój kod.
var fs = require("fs");
var index = 1;
fs.readFileSync('./input.txt').toString().split('\n').forEach(
function (line) {
console.log(line);
fs.open("./output.txt", 'a', 0666, function(err, fd) {
fs.writeSync(fd, line.toString() + "\n", null, undefined, function(err, written) {
})});
}
);
Wszelkie przemyślenia zostaną docenione, dzięki.
To bezpieczne miksuj i asynkuj wersje funkcji fs, ale nadal musisz ustawić callback w odpowiedniej kolejności –
@AndreySidorov Dla początkujących łatwiej jest nie mieszać kodu synchronicznego i asynchronicznego i wybrać pojedyncze podejście. Na przykład OP otwiera plik asynchronicznie (w ten sposób kolejność wywołań 'open' nie jest zachowywana), ale z jakiegoś powodu używa synchronicznej wersji' write'. – penartur