I've været forsøger at finde en måde at skrive til en fil, når du bruger Node.js, men uden held. Hvordan kan jeg gøre det?
Der er mange detaljer i File System API. Den mest almindelige måde er:
const fs = require('fs');
fs.writeFile("/tmp/test", "Hey there!", function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
I øjeblikket er der tre måder at skrive en fil på:
[fs.write(fd, buffer, offset, length, position, callback
)][1][1]
Du skal vente på callbacken for at sikre, at bufferen bliver skrevet til disken. Den er ikke buffered.
[fs.writeFile(filnavn, data, [encoding], callback)
][2][2]
Alle data skal gemmes på samme tid; du kan ikke udføre sekventielle skrivninger.
[fs.createWriteStream(path, [options]
)][3][3]
Opretter en [WriteStream
][4], hvilket er praktisk, fordi du ikke behøver at vente på en callback. Men igen er den ikke buffered.
En [WriteStream
][4] er, som navnet siger, en stream. En stream er pr. definition "en buffer", der indeholder data, som bevæger sig i én retning (kilde ► destination). Men en skrivbar stream er ikke nødvendigvis "buffered". En stream er "buffered", når du skriver n
gange, og til tiden n+1
sender streamet bufferen til kernen (fordi den er fuld og skal spules).
Med andre ord: "En buffer" er objektet. Om den "er buffered" eller ej er en egenskab ved dette objekt.
Hvis du ser på koden, arver WriteStream
fra et skrivbart Stream
-objekt. Hvis du er opmærksom, vil du se, hvordan de spuler indholdet; de har ikke noget buffersystem.
Hvis du skriver en streng, bliver den konverteret til en buffer og derefter sendt til det native lag og skrevet til disken. Når man skriver strenge, fylder de ikke nogen buffer. Så hvis du gør det: