node.js删除文件夹的疑惑

我先贴上代码:

module.exports ={
    deleteFolder: function (path) {
            var _this = this;
            var files = [];
            if( fs.existsSync(path)) {
                files = fs.readdirSync(path);
                console.log(files);
                files.forEach(function (file, index) {
                    var curPath = p.join(path, file);
                    if( fs.statSync(curPath).isDirectory() ) {
                        _this.deleteFolder(curPath);
                    } else {
                        fs.unlinkSync(curPath);
                    }
                });
                fs.rmdirSync(path);
            }
            console.log('deleteFolder success')
        },
    
        deleteProjectFolder: function (path) {
            var _this = this;
            var files = [];
            if(fs.existsSync(path)) {
                files = fs.readdirSync(path);
                files.forEach(function (file, index) {
                    var curPath = p.join(path, file);
                    if( fs.statSync(curPath).isDirectory() ) {
                        _this.deleteFolder(curPath);
                    }
                });
    
                fs.rmdirSync(path);
            }
    
            console.log('deleteFolder success')
        }
}

本人项目需要对文件夹进行删除的操作,在网上找了找,于是有了方法deleteFolder,但是发现这个方法只能删除包含文件的文件夹,若是文件夹中嵌套文件夹,这个方法就不行了。于是有了自己写的方法deleteProjectFolder。可以发现后者与前者几乎一样,但是后者能删除任意嵌套的文件夹。。我觉得应该有可以优化的地方,但是排了一天bug了,心累,希望大佬们帮帮忙指点一下。

阅读 4.8k
2 个回答

用这个fs-extra
不仅包含删除操作,还有一些其他增强的文件操作方法,很好用,如果还有其他问题,欢迎追问

可以使用node调用系统的命令,比如linux下就用调用rm -rf命令去删除。至于效率可以测试一下。

const { spawn } = require('child_process');
const ls = spawn('rm', ['-rf', '/Users/mao/workspack/python-demo/test.txt']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题