最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

创建前重命名的文件

运维笔记admin11浏览0评论

创建前重命名的文件

创建前重命名的文件

我刚刚开始学习Node.js,并立即使用下面的代码进行学习:

const fs = require(`fs`);

fs.appendFile(`mynewfile1.txt`, `Hello content!`, err => {
  if (err) throw err;
  console.log(`Saved!`);
});

fs.rename(`mynewfile1.txt`, `myrenamedfile.txt`, err => {
  if (err) throw err;
  console.log(`File Renamed!`);
});

它位于app.js中,并且此目录中没有其他文件,然后运行。

当我运行它(使用node app.js bash命令)时,它稳定地输出:

> File Renamed!
> Saved!

我知道这两个操作都是异步运行的,并且我认为重命名文件必须比创建一个新文件快,但是如果我们尝试重命名的文件不存在,并且应该重新命名,fs.rename应该会抛出该异常。第一条陈述不存在。否则,它会假装一切正常。

我认为发生这种情况是因为在执行昂贵的I / O节点之前以某种方式评估了操作,就我而言,不是立即创建新文件并重命名,而是直接创建名为myrenamedfile.txt的文件。

我的问题是:

  1. 我对我的上一个假设是正确的吗?如果是这样,请您指出一些与此有关的文档,否则,请您解释为什么会发生这种情况吗?
  2. 在这种情况下,您还能指出我规管fs.rename行为的规则吗?我的意思是,因为它显然并没有实际重命名现有文件(因为它当时尚未创建),所以它应该做些不同的事情。那么,“不同之处”的文档在哪里? The main documentation未指定。

UPD:

感谢所有到目前为止做出回应的好人,我知道如果需要,可以使用promisify模块中的utils或实验性require('fs').promises来链接操作,但问题是关于[[为什么] >代码有效且不会引发错误,不是how操作可能被链接在一起。

我刚刚开始学习Node.js,并立即使用以下代码进行了阻塞:const fs = require(`fs`); fs.appendFile(`mynewfile1.txt`,`Hello content!`,err => {if(err)throw err; ... 回答如下:如果“文件重命名!”首先执行“已保存!”部分将创建一个名为mynewfile1.txt

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论