如何在nodeJS中使用文件系统删除文件?

how to delete file using FileSystem in nodeJS?

我不知道为什么,但我无法使用 unlink()unlinksynk().

删除文件

我使用 multiparty.Form() 方法存储了文件。它将生成具有随机名称和 returns filePathoriginalFileName 的文件。在此之后我用 originalFileName.

重命名了文件

代码:

      await form.parse(fileData, (err: Error, fields: any, res: any) => {
        if (err) {
          callback(err, null);
        } else {
          let file_path = res.file[0].path;
          let assignedFilePath = file_path.substr(res.file[0].path.lastIndexOf('\/') + 1);
          let originalFilePath = res.file[0].originalFilename;
          originalFilePath = path.dirname(assignedFilePath) + '\' + originalFilePath;
          fs.rename(assignedFilePath, originalFilePath, function (err: any) {
            if (err)
              callback(err, null);
            else
              callback(err, JSON.stringify({'path': originalFilePath}));
          });
        }
      }); 

deleteFile() 代码

 deleteTempFiles(tempFolderPath: string) {
    return new Promise(function (resolve: any, reject: any) {
      fs.readdir(tempFolderPath, (err: any, files: any) => {
        if (err) {
          reject();
        } else {
          for (let file of files) {
            fs.unlink(tempFolderPath + file, (err: any) => {
              if (err) {
                reject();
              }
            });
          }
          resolve();
        }
      });
    }).catch(function (e) {
      Promise.reject(e.message);
    })
  }

编辑:

错误是,在删除文件时,编译器说 Error: EBUSY: resource busy or locked, unlink

而且我认为我没有在程序中的任何地方使用该文件?

提前致谢。

==== 第二个回答===

你的deleteTempFiles函数完全错误 阅读此 removing of each file in directory (and directories) inside a dir

您的代码中有很多逻辑错误。

  1. 您使用 synchronius for 循环,对从给定目录中删除文件(和目录)列表的任务进行排队。
  2. 您取消所有链接 - 甚至目录 ... - 不可能
  3. 你总是在那个循环之后 resolves,并在第一个错误之后拒绝 - 但通常拒绝应该在解决之后很久(循环很快,它只排队 io 访问,还没有执行取消链接,然后resolve 被执行)。

====第一个回答===

您有 renameFile 的代码,它将文件从旧名称(和位置)移动到新名称。因此删除旧文件根本不起作用,所以您应该删除新文件。