Node.js'fs' – 更有效的方式来创build文件+清除文件

目前我正在使用fs.createWriteStream(filePath)做两件事情:

  1. 创build文件,如果它不存在
  2. 清除/删除文件的内容

但是,我从来没有真正写信给这个stream,所以我没有真正使用它。 我想知道这是如何犹太教,如果我应该使用更有效或更明确的方法来创build文件,如果它不存在,并清除文件。 有任何想法吗?

根据您的要求,发表我的评论作为答案…

使用'w''w+'标志的fs.open(filePath, 'w+')也会创build/截断文件。

我不认为它实际上会给你一个不同于你的fs.createWriteStream(filePath) ,代码执行的差异可能是微不足道的,特别是考虑到有磁盘I / O。 但是,它可能感觉有点清洁,因为它没有build立一个你不打算使用的stream。

你可以直接使用

 fs.writeFile('file path',<data to write>,'encoding',callback) //in your case data is empty 

它将创build文件,如果它不存在,如果存在然后拳头清除内容并添加新的内容

除非你真的打算写文件,否则最好不要打开文件。 你可以写一些打开和写入封装函数来延迟打开文件,直到需要写入。

 var fd; function open() { if (fd) { return; } fd = fs.open(filePath, 'w'); } function write(buffer) { if (!fd) { open(); fs.writeFile(fd, buffer); } else { fs.write(fd, buffer); } } write('open file and write'); write('write to already opened file'); 

打开时,使用fs.open和'w'标志,这意味着文件被创build(如果不存在)或被截断(如果存在)。

另一种方法是write()函数在第一次写入文件时调用fs.writeFile,这将覆盖文件的现有内容,并在随后的写入中调用fs.write以追加。

实际上,使用writeFile()和write()之间应该几乎没有性能差异,但是它可以避免检查文件是否存在,如果删除,还可以创build新文件。

我假设你一次只有一个进程访问这个文件。