如何在javascript中写入文本文件而不覆盖文本?
Posted
技术标签:
【中文标题】如何在javascript中写入文本文件而不覆盖文本?【英文标题】:How to write to text file in javascript without overwriting text? 【发布时间】:2020-03-28 19:18:20 【问题描述】:我过去对这个主题所做的研究表明这段代码:
const filestream = require('fs');
for(let a = 0; a < 4; a++)
fs.writeFileSync('test.txt', 'test' + a + '\n', 'UTF-8', 'flags': 'a');
应该输出
测试0 测试1 测试2 测试3
到 test.txt。但是,我看到的只是 test3,表明每次写入文件都会覆盖所有现有文本。尽管我使用了“a”标志。这是怎么回事?
【问题讨论】:
这能回答你的问题吗? How to append to a file in Node? 【参考方案1】:我认为您应该为此使用另一个功能,您可以尝试以下方法吗?
fs.appendFileSync('test.txt', 'test' + a + '\n');
【讨论】:
***.com/questions/3459476/… AppendFile 不适合用于大型文件追加。【参考方案2】:fs.writeFileSync()
将文件的全部内容替换为您的新内容。它不会将内容附加到末尾。有多种方法可以追加到文件的末尾。
最简单的机制是fs.appendFileSync()
,这对你有用,但在循环中调用它不是很有效,因为在内部,fs.appendfileSync()
将调用fs.openSync()
,@ 987654325@ 和 fs.closeSync()
用于每次循环。
最好先打开文件一次,写完所有的内容,然后关闭文件。
const fs = require('fs');
const fd = fs.openSync('temp.txt', 'w');
for (let a = 0; a < 4; a++)
fs.writeSync(fd, 'test' + a + '\n', 'utf-8');
fs.closeSync(fd);
或者,您可以收集您的数据,然后一次性全部写入:
let data = [];
for (let a = 0; a < 4; a++)
data.push('test' + a + '\n');
fs.writeFileSync('temp.txt', data.join(''), 'utf-8');
【讨论】:
以上是关于如何在javascript中写入文本文件而不覆盖文本?的主要内容,如果未能解决你的问题,请参考以下文章