创建前重命名的文件
我刚刚开始学习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
的文件。
我的问题是:
- 我对我的上一个假设是正确的吗?如果是这样,请您指出一些与此有关的文档,否则,请您解释为什么会发生这种情况吗?
- 在这种情况下,您还能指出我规管
fs.rename
行为的规则吗?我的意思是,因为它显然并没有实际重命名现有文件(因为它当时尚未创建),所以它应该做些不同的事情。那么,“不同之处”的文档在哪里? The main documentation未指定。
UPD:
感谢所有到目前为止做出回应的好人,我知道如果需要,可以使用promisify
模块中的utils
或实验性require('fs').promises
来链接操作,但问题是关于[[为什么] >代码有效且不会引发错误,不是how操作可能被链接在一起。
mynewfile1.txt
创建前重命名的文件
我刚刚开始学习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
的文件。
我的问题是:
- 我对我的上一个假设是正确的吗?如果是这样,请您指出一些与此有关的文档,否则,请您解释为什么会发生这种情况吗?
- 在这种情况下,您还能指出我规管
fs.rename
行为的规则吗?我的意思是,因为它显然并没有实际重命名现有文件(因为它当时尚未创建),所以它应该做些不同的事情。那么,“不同之处”的文档在哪里? The main documentation未指定。
UPD:
感谢所有到目前为止做出回应的好人,我知道如果需要,可以使用promisify
模块中的utils
或实验性require('fs').promises
来链接操作,但问题是关于[[为什么] >代码有效且不会引发错误,不是how操作可能被链接在一起。
mynewfile1.txt