1

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

1 回答 1

3

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

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

对于写入,它们是:

  • w- 打开文件进行写入。该文件被创建(如果它不存在)或被截断(如果它存在)。
  • wx- 喜欢w但以独占模式打开文件。
  • w+- 打开文件进行读写。该文件被创建(如果它不存在)或被截断(如果它存在)。
  • wx+- 喜欢w+但以独占模式打开文件。

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

为此,请查看该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', ...);
});
于 2013-06-04T10:31:15.373 回答