node.js使用fs模块复制(剪切)目录和删除目录

复制(剪切)目录

复制目录涉及子目录复制的问题,需要使用到递归。
node.js使用fs模块复制(剪切)目录和删除目录_第1张图片

代码如下:

var fs = require('fs')
var path = require('path')

/**
 * 将指定src目录下的所有文件剪切到指定目标dest目录下
 * @param src 源目录
 * @param dest 目标目录
 */
function copyDirectory(src, dest) {
    var files = fs.readdirSync(src);
    files.forEach((item, index) => {
        var itemPath = path.join(src, item);
        var itemStat = fs.statSync(itemPath);// 获取文件信息
        var savedPath = path.join(dest, itemPath.replace(src, ''));
        var savedDir = savedPath.substring(0, savedPath.lastIndexOf('\\'));
        if (itemStat.isFile()) {
            // 如果目录不存在则进行创建
            if (!fs.existsSync(savedDir)) {
                fs.mkdirSync(savedDir, {recursive: true});
            }
            // 写入到新目录下
            var data = fs.readFileSync(itemPath);
            fs.writeFileSync(savedPath, data);
            // 并且删除原文件
            fs.unlinkSync(itemPath);
        } else if (itemStat.isDirectory()) {
            copyDirectory(itemPath, path.join(savedDir, item));
        }
    });
    // 并且删除原目录
    fs.rmdirSync(src);
}

copyDirectory('D:\\NodeJs\\node-demo\\abc', 'G:\\Trash\\files\\abc');

注意,上面的功能应该说是剪切更为合适,因为删除了原目录和文件。

删除目录

/**
 * 删除指定目录下所有文件和目录
 * @param dir 指定目录
 */
function delDirectory(dir) {
    let files = [];
    if (fs.existsSync(dir)) {
        files = fs.readdirSync(dir);
        files.forEach((file, index) => {
            let curPath = path.join(dir, file);
            var stat = fs.statSync(curPath);
            if (stat.isDirectory()) {
                delDirectory(curPath); //递归删除文件夹
            } else if (stat.isFile()) {
                fs.unlinkSync(curPath); //删除文件
            }
        });
        fs.rmdirSync(dir);
    }
}

你可能感兴趣的:(#,Node.js,node.js,前端,后端)