javascript - 在 javascript 中,我如何使用 fs.writeFile 并循环一个数组并在一个新的文本文件中垂直完全打印数组中的每个项目
问题描述
我正在尝试使用 fs.writeFile 从字符串数组中循环以创建新的文本文件。我使用 fs.writeSync 并且它有效。但是,当我使用 fs.writeFile 时,我创建的文本文件中的内容并未显示数组中的每个项目。相反,结果更像是我的数组的一些不完整的字符串。我使用 setTime() 函数将其设置为 3 秒,但仍然没有在我的文本文件中显示完整的结果。
fs.writeSync 完美运行
function fileWriteSync(filePath) {
const fd = fs.openSync(filePath, 'w');
for (var i = 0; i < tips.length; i++) {
fs.writeSync(fd, tips[i] + '\n');
console.log(tips[i]);
}
fs.closeSync(fd);
}
tips = [
"Work in teams",
"get enough sleep",
"be on time",
"Rely on systems",
"Create a rough weekly schedule",
"Get rid of distractions before they become distractions",
"Develop good posture",
"Don’t multitask",
"Cultivate the belief that intelligence isn’t a fixed trait",
"Work in short blocks of time", "Exercise regularly",
"Be organized", "Break big tasks into smaller ones",
"Take notes during class", "Ask lots of questions",
"Eat healthily",
"Do consistent work",
"Manage your thoughts and emotions",
"Give yourself rewards",
"Manage your stress"
]
function fileWrite2(savePath) {
setTimeout(() => {
for (var i = 0; i < tips.length; i++) {
fs.writeFile(savePath, tips[i] + "\n", function(err) {
if (err) throw err;
});
}
console.log('File written sucessfully');
}, 3000);
}
fileWrite2('tips3.txt')
我当前的输出:
管理你的压力和情绪并不是一个固定的特质
解决方案
writeFile 的工作方式是它不是附加到文件,而是替换其中的文本。这就是你得到输出的原因。
您可以改为使用函数 appendFile。
function fileWrite2(savePath) {
setTimeout(() => {
for (var i = 0; i < tips.length; i++) {
fs.appendFile(savePath, tips[i] + "\n", function(err) {
if (err) throw err;
});
}
console.log('File written sucessfully');
}, 3000);
}
推荐阅读
- angular - 将自定义组件添加到离子页面
- javascript - Highcharts Gantt (JS) - 删除 x 轴上的日期
- javascript - 导入模块的最佳实践是什么?
- git - Git 在重新排序提交后拒绝推送
- javascript - 我需要使用返回的承诺功能吗?
- c++ - 100位数字的总和
- python - 机器人框架 - 如何使用相同名称的函数,但来自我在关键字部分创建的不同 python 库
- angular - 在 Angular 中从 WebServer 发出响应消息
- javascript - 使用 JavaScript 加载 HTML 文件与文件内容长?
- c# - 不带 Unity 的 UWP 运动控制器输入