在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', ...); });