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

时间:2013-06-04 10:28:04

标签: node.js file

在下面的代码中,我正在尝试编写非现有文件'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.');
 }
});

1 个答案:

答案 0 :(得分:3)

因为如果文件不存在,writeFile函数会创建文件。

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

对于写作,它们是:

  • w - 打开文件进行写作。创建文件(如果它不存在)或截断(如果存在)。
  • wx - 与w类似,但以独占模式打开文件。
  • w+ - 打开文件进行读写。创建文件(如果它不存在)或截断(如果存在)。
  • wx+ - 与w+类似,但以独占模式打开文件。

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

为此,请查看fs.exists功能(有关详细信息,请参阅documentation)。

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

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

  fs.writeFile('foo.txt', ...);
});