node复制文件夹及文件

复制操作

复制文件

fsfs/promise复制文件调用copyFile(src, dist, mode?, callback)

mode总共三种模式,可以使用按位或的方式同时指定:COPYFILE_EXCL | COPYFILE_FICLONECOPYFILE_EXCL | COPYFILE_FICLONE_FORCE

// cpFile.js
const { copyFile, constants } = require('node:fs');

function callback(err) {
  if (err) throw err;
  console.log('source.txt was copied to destination.txt');
}

// 默认会覆盖目标文件内容
copyFile('source.txt', 'destination.txt', callback);

// 使用COPYFILE_EXCL,如果目标文件存在就报错
copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL, callback);

复制文件夹

直接复制文件夹使用cp(src, dist, options)

public目录的内容复制到dist目录。

// cp.js
const { cp } = require('node:fs');

cp('public', 'dist', {
  recursive: true,
  force: true,
});

复制特定文件或文件夹需要使用filter函数:
filter函数返回true会递归遍历文件夹下的所有文件或文件夹

// cp.js
const { cp } = require('node:fs');
const key = 'abc';
const srcDir = 'public';
cp(`packages/abc`, 'dist', {
      recursive: true,
      force: true,
      filter: async function (source) {
      	// 在windows下会有\\\\?\\前缀
      	// 只会复制abc/public目录(包含public)进入目标文件夹
        if (source.split('\\').includes(srcDir)) {
          return true;
        }
        // 这里让source最后等于abc的通过,否则无法继续遍历
        if (source.split('\\').slice(-1)[0] === key) {
          return true;
        }
      },
    });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值