fs.write()fs.writeFile()fs.appendFile()之间有什么区别?

我很难理解这3种方法之间的具体区别,因为对我来说,它们最终看起来是一样的,或者更确切地说,就像是彼此的捷径.

fs.write()fs.writeFile()的基本描述来看,它们似乎是一样的,明显的区别是参数的数量,fs.writeFile()有更多.但in the description of fs.writeFile()它说

与fs.readFile类似- fs.writeFile是一种方便的方法,可以在内部执行多个写调用以写入传递给它的缓冲区.

那么这只是调用倍数fs.write()的一种更快、自动的方式吗?这让我们来到了fs.appendFile(),因为这似乎是设置了a标志的fs.writeFile()的捷径.我能看到的唯一区别是默认设置标志和可以用于data的类型数量.

那么也会有fs.createWriteStream()个,但这显然是有区别的 在多种方面,并且具有与writing()方法不同的用例,就像必须快速且经常编写的记录器,所以我确实明白了其中的区别.

推荐答案

fs.write()的第一个参数必须是文件描述符,它将由fs.open提供,但fs.writeFile()可以采用文件描述符或文件路径. 文件还提到

Using fs.writeFile() with file descriptors

与直接调用fs. add()的区别在于,在一些异常情况下,fs. add()可能只写缓冲区的一部分,需要重新try 才能写剩余数据,而fs.writeFile()为retries until the data is entirely written(或发生错误).

fs.appendFile(),因为这看起来像是设置了a标志的fs.writeFile()的快捷方式.我看到的唯一区别是默认设置标志和可以用于数据的类型数量.

是的, 这是fs.appendFile的来源

// below function is output of process.stdout.write(fs.appendFile.toString())

function appendFile(path, data, options, callback) {
  callback = maybeCallback(callback || options);
  options = getOptions(options, { encoding: 'utf8', mode: 0o666, flag: 'a' });

  // Don't make changes directly on options object
  options = copyObject(options);

  // Force append behavior when using a supplied file descriptor
  if (!options.flag || isFd(path))
    options.flag = 'a';

  fs.writeFile(path, data, options, callback);
}

Javascript相关问答推荐

如何从对象嵌套数组的第二级对象中过滤出键

在JS中获取名字和姓氏的首字母

JavaScript文本区域阻止KeyDown/KeyUp事件本身上的Alt GR +键组合

如何修复内容安全策略指令脚本-SRC自身错误?

fs. writeFile()vs fs.writeFile()vs fs.appendFile()

Google Apps脚本中的discord邀请API响应的日期解析问题

如何在Angular中插入动态组件

在grafana情节,避免冲突的情节和传说

如何从URL获取令牌?

JSDoc创建并从另一个文件导入类型

用JS从平面文件构建树形 struct 的JSON

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

连接到游戏的玩家不会在浏览器在线游戏中呈现

OpenAI转录API错误请求

为什么云存储中的文件不能公开使用?

打字脚本中方括号符号属性访问和拾取实用程序的区别

是否可以将异步调用与useState(UnctionName)一起使用

Played link-Initialize.js永远显示加载符号

如何在css中裁剪成一定Angular 的圆的一部分,而不需要复杂的多边形

当一条路由在Reaction路由中命中时,如何有条件地渲染两个组件或更改两个插座?