文件路径和在Node.js中删除文件

12
我想删除list_file_to_delete中的3个文件,但我不知道要将“这里放三个文件的路径”放在哪里?我需要使用for循环/for in/forEach函数删除所有文件吗,还是只需要一个包含3个路径的字符串,例如var string = "...a1.jpg, ...a2.jpg,...a3.jpg"? 谢谢提前回答。
delete.js文件中。
var list_file_to_delete = ["/images/a1.jpg", "/images/a2.jpg", "/images/a3.jpg"]
fs.unlink(path to three files here, function(err) {console.log("success")})

这是myapp目录。

 myapp
      /app
          /js
             delete.js
      /public
             /images
                    a1.jpg
                    a2.jpg
                    a3.jpg
      server.js

反引号不是引号。只能用它们来包围代码。 - Mike 'Pomax' Kamermans
1个回答

17

fs.unlink 接受单个文件,因此要解除链接每个元素:

list_of_files.forEach(function(filename) {
  fs.unlink(filename);
});

或者,如果您需要连续但异步的删除操作,可以使用以下ES5代码:

(function next(err, list) {
  if (err) {
    return console.error("error in next()", err);
  }
  if (list.length === 0) {
    return;
  }
  var filename = list.splice(0,1)[0];
  fs.unlink(filename, function(err, result) {
    next(err, list);
  });
}(null, list_of_files.slice()));

谢谢,关于文件路径怎么样?我使用的是/../public/images/a1.jpg,但不起作用。 - user3044147
1
路径是相对于你在 node yourscript.js 使用的目录,所以如果你在 myapp 目录中调用它,你将取消链接像 "./public/images/a1.jpg" 这样的文件。 - Mike 'Pomax' Kamermans
现在它可以工作了,非常感谢。但是我不明白为什么,因为我认为我们在 js 目录中使用相对路径来引用 public 目录。 - user3044147
如果您在 server.js 中将 public 设置为静态文件夹,则可以直接访问 ./images/...,无需使用相对路径甚至是 /../public/images/...。希望我已经回答了您关于文件夹目录的问题。 - AllJs
4
相信我,迈克。有成百上千的人正在开始学习 NodeJS 或其他任何技术。只要提供的信息有效,拥有广泛的观点和替代方案将为他们节省许多调试时间。而且我认为一个问题是否是三年前的并不重要,有关主题的新信息总是件好事。 - AllJs
2
我发现ALLJs的评论很有用 ;) - AlainIb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接