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中实现路由功能
Dec 29 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
nodejs实现UDP组播示例方法
Nov 04 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 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 DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php变量作用域的深入解析
2013/06/03 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
JSON相关知识汇总
2015/07/03 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
实例讲解python中的序列化知识点
2018/10/08 Python
python write无法写入文件的解决方法
2019/01/23 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
python中def是做什么的
2020/06/10 Python
Python程序慢的重要原因
2020/09/04 Python
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
类如何去实现接口
2013/12/19 面试题
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
教师评优事迹材料
2014/01/10 职场文书
物流业务员岗位职责
2015/04/03 职场文书
2016七夕情人节感言
2015/12/09 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python