2016-02-03 10 views
9

Im пытается записать в текстовый файл в node.js. Im делает это следующим образом:Перезаписать файл в Node.js

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

тогда строка является переменной.

Эта функция начнет писать ее всегда в начале файла, поэтому она перезапишет предыдущий контент.

У меня есть проблема в следующем случае:

старое содержание:

Hello Stackoverflow 

новый формат записи:

Hi Stackoverflow 

Теперь следующее содержимое будет находиться в файле:

Hi stackoverflowlow 

Новый wr ite был короче, чем предыдущий контент, поэтому часть старого контента по-прежнему сохраняется.

Мой вопрос:

Что мне нужно сделать, так что старое содержимое файла будет полностью удалена перед новой записи производится?

+0

взглянуть на официальной документации, вы найдете что-то для конечно, writeStream или что-то вроде этого или какой-то вариант. https://nodejs.org/api/ –

ответ

11

Вы можете попробовать усечения файла первыми:

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

переименовать старый файл и добавить в поэтому в несуществующий файл (создание нового). Таким образом, у вас есть с одной стороны, резервного копирования и с другой стороны свежий обновленный файл ./config.json:

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

(синхронизации версии, может бросить)