Dalej poznajemy moduł filesystem – uczymy się dodawać treść do już istniejących plików nie usuwając poprzedniej. Do dzieła.
Zakładam, że kontynuujemy poprzednią lekcję i ten kod nie ma dla nas tajemnic:
const fs = require("fs");
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
let fpath = file("lorem.txt");
Dane do pliku dodajemy w ten sposób:
const fs = require("fs");
const path = require("path");
function file(filename) {
return path.join(__dirname, "files", filename);
}
let fpath = file("lorem.txt");
fs.appendFile(fpath, 'This is new data!', function (err) {
if (err) throw err;
console.log('Data appended to file!');
});
Dopisało nam dane (bez spacji i entera). Teraz postarajmy się napisać funkcję do tego:
function appendToFile(fpath, data, newline=true){
fs.exists(fpath, function(exists){
if(!exists){
console.log("File doesnt exist");
return;
}
let msg = newline ? "\n" : " ";
fs.appendFile(fpath, msg+data, function(err){
if (err) throw err;
console.log('Data appended to file!');
});
});
}
appendToFile(fpath, "after space", false);
appendToFile(fpath, "from new line");
Uwaga – żadnej gwarancji nie mamy, że te asynchroniczne funkcje wykonają się w takiej akurat kolejności. Ale to bardziej zaawansowane zagadnienie.