node.js odczytuje nieszczęścia
Poniższy fragment kodu tworzy plik tekstowy, a następnie odczytuje go, nadpisuje i odczytuje ponownie. Oprócz utworzenia pliku trzy operacje we / wy są wykonywane przy użyciu async readFile Node.js i writeFile.
Nie rozumiem, dlaczego powraca pierwszy odczytżaden błąd alebrak danych zarówno. Wynikiem tego kodu jest:
Startowy...Gotowe.pierwszy odczyt zwrócił PUSTE dane!napisz skończył OKdrugi odczyt zwrócił dane: zaktualizowany tekstNawet gdyby operacje miały się odbyć w dowolnej kolejności (ze względu na ich asynchroniczną naturę), NIE spodziewałbym się uzyskać obiektu „puste dane”.
Jakieś pomysły, dlaczego otrzymuję puste dane podczas czytania pliku (i bez błędu)?
Czy jest coś, co mogę zrobić, aby upewnić się, że zawartość pliku jest odczytywana?
<code>var fs = require('fs'); var fileName = __dirname + '/test.txt'; // Create the test file (this is sync on purpose) fs.writeFileSync(fileName, 'initial test text', 'utf8'); console.log("Starting..."); // Read async fs.readFile(fileName, 'utf8', function(err, data) { var msg = ""; if(err) console.log("first read returned error: ", err); else { if (data === null) console.log("first read returned NULL data!"); else if (data === "") console.log("first read returned EMPTY data!"); else console.log("first read returned data: ", data); } }); // Write async fs.writeFile(fileName, 'updated text', 'utf8', function(err) { var msg = ""; if(err) console.log("write finished with error: ", err); else console.log("write finished OK"); }); // Read async fs.readFile(fileName, 'utf8', function(err, data) { var msg = ""; if(err) console.log("second read returned error: ", err); else if (data === null) console.log("second read returned NULL data!"); else if (data === "") console.log("second read returned EMPTY data!"); else console.log("second read returned data: ", data); }); console.log("Done."); </code>