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(二)--- Node.js事件模块
May 21 NodeJs
nodejs中使用monk访问mongodb
Jul 06 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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
人族 TERRAN 概述
2020/03/14 星际争霸
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python3 re返回形式总结
2020/11/20 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
烹调加工管理制度
2014/02/04 职场文书
2014年党建工作总结
2014/11/11 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
英语演讲开场白
2015/05/29 职场文书
Python基础之元类详解
2021/04/29 Python
教你怎么用python实现字符串转日期
2021/05/24 Python