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.