在node.js中,为什么我在写入非现有文件时没有收到错误

在下面的代码中,我试图写非现有的文件“doesnotexist.text”,但我仍然得到成功的结果。

var fs = require('fs'); fs.writeFile('doesnotexist.text', 'Hello World!', function (err) { if (err) { console.log('error is '+err); return; } else{ console.log('success.'); } }); 

因为writeFile函数创build文件,如果它不存在。

基本上,您可以通过提交一个options对象作为第三个参数来更改此函数的行为,如文档中所述。 对于flags属性,您可以提供fs.open文档中描述的值。

为了写,他们是:

  • w – 打开文件写入。 该文件被创build(如果不存在)或被截断(如果存在)。
  • wx – 像w一样,但以独占模式打开文件。
  • w+ – 打开文件进行阅读和写作。 该文件被创build(如果不存在)或被截断(如果存在)。
  • wx+ – 和w+一样,但以独占模式打开文件。

writeFile的默认值是w ,因此如果该文件不存在,则会创build该文件。 由于在文件不存在时没有提供错误的选项,您需要额外检查文件是否已经存在。

为此,请查看fs.exists函数(详细信息请参阅文档 )。

基本上,你的代码应该有点像这样:

 var fs = require('fs'); fs.exists('foo.txt', function (exists) { if (!exists) { return 'Error, file foo.txt does not exist!'; } fs.writeFile('foo.txt', ...); });