node.js readfile wehe
Der folgende Code erstellt eine Textdatei und liest sie dann, überschreibt sie und liest sie erneut. Mit Ausnahme der Erstellung der Datei werden die drei E / A-Vorgänge unter Verwendung von Node.js async readFile und writeFile ausgeführt.
Ich verstehe nicht, warum der erste Lesevorgang zurückkehrtkein Fehler aberkeine Daten entweder. Die Ausgabe dieses Codes ist:
Beginnend...Erledigt.Erstes Lesen der zurückgegebenen leeren Daten!schreibe fertig OKZweiter Lesevorgang zurückgegebene Daten: aktualisierter TextSelbst wenn die Operationen in einer willkürlichen Reihenfolge stattfinden würden (aufgrund ihrer asynchronen Natur), hätte ich NICHT erwartet, ein "leeres Daten" -Objekt zu erhalten.
Irgendwelche Ideen, warum ich beim Lesen der Datei leere Daten erhalte (und kein Fehler)?
Kann ich irgendetwas tun, um sicherzustellen, dass der Dateiinhalt gelesen wird?
<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>