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框架Express的模板视图机制分析
Jul 19 NodeJs
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
nodejs简单抓包工具使用详解
Aug 23 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
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Javascript 中的类和闭包
2010/01/08 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
javascript history对象详解
2017/02/09 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
JS常见算法详解
2017/02/28 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
高二历史教学反思
2014/01/25 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
文秘自荐信
2014/06/28 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL