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

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js使用fs模块复制(剪切)目录和删除目录相关的知识,希望对你有一定的参考价值。

复制(剪切)目录

复制目录涉及子目录复制的问题,需要使用到递归。

代码如下:

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使用fs模块复制(剪切)目录和删除目录的主要内容,如果未能解决你的问题,请参考以下文章

Node.js——fs模块(文件系统),创建删除目录(文件),读取写入文件流

Node.js 初识 fs 模块

在node.js中使用fs模块复制文件夹报错“no such file or directory, mkdir“

node.js 使用fs模块对系统文件及目录进行读写操作

Node.js fs文件系统相关操作

Node.js fs文件系统相关操作