问题-节点js正在将文件从文件夹x移动到文件夹y

Trouble - Node js moving files from folder x to folder y

本文关键字:文件夹 移动 文件 js -节点 问题      更新时间:2023-09-26

我试图使用node.js将文件从文件夹currentFolder(root of project)/node_modules/mime/移动到currentFolder(root of project)/files/,但我一直收到这个错误:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: EISDIR, open 'files/'
    at Error (native)

这是我迄今为止所拥有的。目前,它所做的是循环浏览我指定的目录中的每个文件夹,并打印出读取的每个文件夹的文件类型。但是我在移动文件时遇到了问题,我一直收到上面指定的错误。我当前的代码如下-

var mime = require('mime');
var fs = require('fs');
var dest = fs.createWriteStream('files/');
var source; 
var i = 0;
// General function - Loop through files in directory X and COPY AND PASTE FILES FROM X to Y
var dive = function (dir, action) {
  // Assert that it's a function
  if (typeof action !== "function")
    action = function (error, file) { };
  // Read the directory
  fs.readdir(dir, function (err, list) {
    // Return the error if something went wrong
    if (err)
      return action(err);

    // Loop through file in list
    list.forEach(function (file) {
    console.log(mime.lookup(dir + "/" + file));
      // Full path of that file
      path = dir + "/" + file;
      source = fs.createReadStream(path);
      source.pipe(dest + '/'+i);
      console.log("Moved");
      i++;
        source.on('end', function() { /* copied */ });
        source.on('error', function(err) { /* error */ });
    });
  });
};
dive("node_modules/mime");

您可以在文件上createWriteStream,而不是在目录上。每个目标文件都需要单独的流。

因此,取而代之的是:

  source = fs.createReadStream(path);
  source.pipe(dest + '/'+i);

你需要这个:

  source = fs.createReadStream(path);
  var destFile = fs.createWriteStream('files/'+i);
  source.pipe(destFile);