如何在列表中使用fs.writeFileSync写入文件



我正试图制作我的第一个"AI";它存储了我用一个";聊天机器人";每次我打开喜欢如果我使用";你好";后来我用";Heya";聊天机器人会将这些单词写在json文件上当我打开程序时,随机使用这些词来问候我

(此时此刻,我正试图把单词写在列表上,机器人用这些我还没有创建的单词来问候我(

这是我尝试的代码:

const fs = require('fs');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Hello! ', (answer) => {
// TODO: Log the answer in a database
console.log(`The ${answer} word has stored :)`);

fs.writeFileSync(__dirname + '/startkeywords.json', JSON.stringify(answer, null, 4));
console.log('created at' + __dirname);
rl.close();
});

但是,当我执行程序并说一些话时,它会写入,但不在列表中它只是写,所以我试图把文件写在这样的列表上:

列出示例

请帮助

如果您想存储您的"关键字";作为有效的json文件,您可能需要读取文件、添加数据并再次写入:

const fs = require('fs')
const startKeywordsFile = 'startkeywords.json'
// create an empty json if not exists
if (!fs.existsSync(startKeywordsFile)) {
fs.writeFileSync(startKeywordsFile, '[]')
}
let words = JSON.parse(fs.readFileSync(startKeywordsFile, 'utf8'))
function addWord(newWord) {
if (words.includes(newWord)) {
// already exists
return
}
words.push(newWord)
fs.writeFileSync(startKeywordsFile, JSON.stringify(words, null, 4))
}
addWord('hi')
addWord('hello')

startkeywords.json:

[
"hi",
"hello"
]

请记住,如果列表很大,可能会出现性能问题。如果你想把关键词保存为纯文本(一行一个单词,不是有效的json(,你可以使用fs.appendFileSync来附加你的文件,而不必每次都重写整个文件。

最新更新