我正在尝试使用node.js将文件写入文件。问题是,它没有写入所有的Feed,只写了最后一个。
var fs = require('fs');
var feedParser = require('ortoo-feedparser')
var url = "http://iwnsvg.com/feed";
feedParser.parseUrl(url).on('article', function(article) {
console.log('title; ', article.title);
fs.writeFile("articles.json", JSON.stringify(article.title), function(err) {
if(err) {
console.log(err);
}
});
});
为什么?
答案 0 :(得分:3)
只需将fs.writeFile(
更改为fs.appendFile(
,您就可以了。
fs.writeFile
都会覆盖您的文件,而fs.appendFile
会添加到文件中。
答案 1 :(得分:0)
正如@Robert所说,您应该使用appendFile
,但请注意,该更改不会写出有效的json。我不确定你想要实现什么输出 - 你只需要你可以写出一个txt文件的标题,每行都有一个标题,如下所示:
var fs = require('fs');
var feedParser = require('ortoo-feedparser')
var url = "http://iwnsvg.com/feed";
feedParser.parseUrl(url).on('article', function(article) {
console.log('title; ', article.title);
fs.appendFile("articles.txt", article.title + "\n", function(err) {
if(err) {
console.log(err);
}
});
});
要写出json,你可以这样做:
var fs = require('fs');
var feedParser = require('ortoo-feedparser')
var url = "http://iwnsvg.com/feed";
let titles = [];
feedParser.parseUrl(url)
.on('article', function (article) {
console.log('title; ', article.title);
titles.push(article.title);
})
.on('end', function () {
fs.writeFile('articles.json', JSON.stringify({ titles }), function (err) {
if (err) {
console.log(err);
}
});
});
答案 2 :(得分:0)
fs.writeFile 附带一些选项,例如 flag 。写入的标志的默认值为 w ,因此您的数据将被新数据替换。
使用' a' 代替
{flag:'a'}
你会没事的。
但请不要忘记WriteFile或AppendFile是fs库中的上层,每次需要添加数据时都会打开和关闭文件。
最好使用 fs.createWriteStream 返回可写流(其他语言的可写文件句柄)。然后在需要在文件中写入数据时使用并重用此流。