node.js - 在node.js中,为什么我在尝试写入不存在的文件时没有收到错误

标签 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.');
 }
});

最佳答案

因为如果文件不存在,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', ...);
});

关于node.js - 在node.js中,为什么我在尝试写入不存在的文件时没有收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915473/

相关文章:

node.js - $node --debug 和 $nodedebug 之间的区别

javascript - 原型(prototype)和原型(prototype)之间的区别._

node.js - Google Recaptcha 无法与 axios 一起使用

vb.net - 高级文本搜索并将特定字符串从文件导入 VB

Java库函数在不同目录中查找影子文件

node.js - 寻找 Angular2 MEAN 堆栈

javascript - 将变量注入(inject)函数的范围

c# - File.Delete 访问路径被拒绝

java - 如何获取java中扫描仪对象中的文件名?

Java:在重写文件之前检查文件是否需要更新的最佳方法是什么?