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打包工具整合到鼠标右键的方法
May 11 NodeJs
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
跟我学Nodejs(一)--- Node.js简介及安装开发环境
May 20 NodeJs
使用forever管理nodejs应用教程
Jun 03 NodeJs
nodejs实现黑名单中间件设计
Jun 17 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
关于NodeJS中的循环引用详解
Jul 23 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 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 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
python基础教程之循环介绍
2014/08/29 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
Python识别处理照片中的条形码
2020/11/16 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
大学生专科毕业生自我评价
2013/11/17 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
租房协议书范本
2014/04/09 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
停课通知书
2015/04/24 职场文书