首页 > 解决方案 > nodejs递归读取目录,获取文件路径,然后使用路径将文件复制到另一个目录

问题描述

我使用recursive-readdir读取目录及其子目录,如下所示:

const fse = require('fs-extra')
const recursive = require('recursive-readdir');

const inputFolder = './input';

const files =  await recursive(inputFolder)

然后我像这样过滤获取的文件:

const fileteredFiles = files.filter((f) => f.includes('.gif'));

我 console.log(filteredFiles) 这是输出:

[ 'input/background/black.gif',
  'input/background/grey.gif',]

现在我想将 black.gif 和 gray.gif 复制到另一个目录,我试过这个:

fse.copyFileSync(fileteredFiles, 'outputDir')

我收到此错误:

TypeError [ERR_INVALID_ARG_TYPE]: The "src" argument must be one of type string, Buffer, or URL. Received type object
    at Object.copyFileSync (fs.js:1719:3)

所以请指出我获取filteredFiles然后复制到另一个目录的正确方法。

任何帮助将非常感激。

标签: javascriptnode.jsfs

解决方案


你读过错误信息吗?

TypeError [ERR_INVALID_ARG_TYPE]: The "src" argument must be one of
type string, Buffer, or URL. Received type object
at Object.copyFileSync (fs.js:1719:3)

您将字符串列表/数组传递给fse.fileCopySync(),而不是单个字符串。尝试类似:

for (const fn of filterFiles) {
  fse.copyFileSync( fn , 'outputdir' ); 
}

推荐阅读