Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Overwrite a File in Node.js

Im trying to write into a text file in node.js. Im doing this the following way:

fs.writeFile("persistence\\announce.txt", string, function (err) {
    if (err) {
        return console.log("Error writing file: " + err);
    }
});

whereas string is a variable.

This function will begin it`s writing always at the beginning of a file, so it will overwrite previous content.

I have a problem in the following case:

old content:

Hello Stackoverflow

new write:

Hi Stackoverflow

Now the following content will be in the file:

Hi stackoverflowlow

The new write was shorter then the previous content, so part of the old content is still persistent.

My question:

What do I need to do, so that the old content of a file will be completely removed before the new write is made?

like image 455
Jakob Abfalter Avatar asked Feb 03 '16 13:02

Jakob Abfalter


2 Answers

You can try truncating the file first:

fs.truncate("persistence\\announce.txt", 0, function() {
    fs.writeFile("persistence\\announce.txt", string, function (err) {
        if (err) {
            return console.log("Error writing file: " + err);
        }
    });
});
like image 102
Gary McLean Hall Avatar answered Oct 15 '22 13:10

Gary McLean Hall


Rename the old file and append to therefore a non existent file (creating a new one). This way you have on the one hand a backup and on other hand a fresh updated file ./config.json:

fs.renameSync('./config.json', './config.json.bak')
fs.appendFileSync('./config.json', text)

(sync version, might throw)

like image 29
qrtLs Avatar answered Oct 15 '22 13:10

qrtLs