NodeJS 文件夹拷贝以及删除功能


Posted in NodeJs onSeptember 03, 2019

文件夹拷贝

function CopyDirectory(src, dest) {
  if (IsFileExist(dest) == false) {
    fs.mkdirSync(dest);
  }
  if (fs.existsSync(src) == false) {
    return false;
  }
  // console.log("src:" + src + ", dest:" + dest);
  // 拷贝新的内容进去
  var dirs = fs.readdirSync(src);
  dirs.forEach(function(item){
    var item_path = path.join(src, item);
    var temp = fs.statSync(item_path);
    if (temp.isFile()) { // 是文件
      // console.log("Item Is File:" + item);
      fs.copyFileSync(item_path, path.join(dest, item));
    } else if (temp.isDirectory()){ // 是目录
      // console.log("Item Is Directory:" + item);
      CopyDirectory(item_path, path.join(dest, item));
    }
  });
}

文件夹删除

function DeleteDirectory(dir) {
  if (fs.existsSync(dir) == true) {
    var files = fs.readdirSync(dir);
    files.forEach(function(item){
      var item_path = path.join(dir, item);
      // console.log(item_path);
      if (fs.statSync(item_path).isDirectory()) {
        DeleteDirectory(item_path);
      }
      else {
        fs.unlinkSync(item_path);
      }
    });
    fs.rmdirSync(dir);
  }
}

nodejs实现文件的拷贝复制

var fs = require( 'fs' ),
  stat = fs.stat;
/*
 * 复制目录中的所有文件包括子目录
 * @param{ String } 需要复制的目录
 * @param{ String } 复制到指定的目录
 */
var copy = function( src, dst ){
  // 读取目录中的所有文件/目录
  fs.readdir( src, function( err, paths ){
    if( err ){
      throw err;
    }
    paths.forEach(function( path ){
      var _src = src + '/' + path,
        _dst = dst + '/' + path,
        readable, writable;   
      stat( _src, function( err, st ){
        if( err ){
          throw err;
        }
        // 判断是否为文件
        if( st.isFile() ){
          // 创建读取流
          readable = fs.createReadStream( _src );
          // 创建写入流
          writable = fs.createWriteStream( _dst ); 
          // 通过管道来传输流
          readable.pipe( writable );
        }
        // 如果是目录则递归调用自身
        else if( st.isDirectory() ){
          exists( _src, _dst, copy );
        }
      });
    });
  });
};
// 在复制目录前需要判断该目录是否存在,不存在需要先创建目录
var exists = function( src, dst, callback ){
  fs.exists( dst, function( exists ){
    // 已存在
    if( exists ){
      callback( src, dst );
    }
    // 不存在
    else{
      fs.mkdir( dst, function(){
        callback( src, dst );
      });
    }
  });
};
// 复制目录
exists( './login', './haha', copy );

总结

以上所述是小编给大家介绍的NodeJS 文件夹拷贝及删除功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

NodeJs 相关文章推荐
NodeJs中的非阻塞方法介绍
Jun 05 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs极简入门教程(二):定时器
Oct 25 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 #NodeJs
nodejs文件夹深层复制功能
Sep 03 #NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 #NodeJs
nodejs简单抓包工具使用详解
Aug 23 #NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 #NodeJs
Nodejs libuv运行原理详解
Aug 21 #NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 #NodeJs
You might like
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php stripslashes和addslashes的区别
2014/02/03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
Three.js学习之网格
2016/08/10 Javascript
js转换对象为xml
2017/02/17 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
python中assert用法实例分析
2015/04/30 Python
python绘图方法实例入门
2015/05/19 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
深入了解Django中间件及其方法
2019/07/26 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
python 画图 图例自由定义方式
2020/04/17 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
类和结构的区别
2012/08/15 面试题
事业单位辞职信范文
2014/01/19 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
超市员工辞职信范文
2015/05/12 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python