gpt4 book ai didi

javascript - Node.js 递归创建和删除文件

转载 作者:行者123 更新时间:2023-11-30 10:43:21 24 4
gpt4 key购买 nike

我认为有一个 for 循环并创建一个文件 hello.txt 然后用 unlink 删除它会是一个很酷的实验。我想如果 fs.unlink 是 Node 中的删除文件过程,那么 fs.link 一定是创建文件。但是,我的代码只会删除,不会创建,一次都不会。即使我将 fs.link 代码分离到一个单独的文件中,它仍然不会创建我的文件 hello.txt。

下面是我的代码:

var fs = require('fs'),
for(var i=1;i<=10;i++){
fs.unlink('./hello.txt', function (err) {
if (err){
throw err;
} else {
console.log('successfully deleted file');
}
fs.link('./hello.txt', function (err) {
if (err){
throw err;
} else {
console.log('successfully created file');
}
});
});
}

http://nodejs.org/api/fs.html#fs_fs_link_srcpath_dstpath_callback

谢谢!

最佳答案

fs.open()使用“w”参数可以创建一个文件。随着您的继续,您的代码可能会遇到第二个问题,大致如下:

/srv/node/test $ node makekill.js 
successfully created file
successfully created file
successfully created file
successfully created file
successfully created file
successfully created file
successfully created file
successfully created file
successfully created file
successfully created file
successfully closed file

/srv/node/test/makekill.js:13
throw err;
^
Error: ENOENT, No such file or directory './hello11.txt'

通过一些额外的日志记录,您会发现您使用的代码实际上并没有触发“hello1.txt”到“hello10.txt”的创建操作,然后是相同的删除操作。 (或者在您的示例中,删除,然后是创建,尽管我在调试时更改了这一点,因为创建/删除对我来说更有意义。)

更重要的是,异步回调似乎都使用最终的“i”值,而不是相关循环期间“i”的值。

长话短说,我通过创建一个单独的函数来实现这个概念,该函数为给定的文件名执行所需的创建/删除,然后从 for 循环中调用该函数。这似乎是一种更可靠的方法,可确保在整个操作序列中使用“i”的预期值,而不是在初始步骤和回调步骤之间更改。

var fs = require('fs');

function openUnlink(name) {
console.log(name);
fs.open(name, 'w', function (err) {
console.log(' + ' + name);
fs.unlink(name, function (err) {
console.log(' - ' + name);
});
});
}

for (var i=1;i<=10;i++) {
openUnlink('hello'+i+'.txt');
}

关于javascript - Node.js 递归创建和删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com