Node.js复制文件的方法示例


Posted in Javascript onDecember 29, 2016

本文实例讲述了Node.js复制文件的方法。分享给大家供大家参考,具体如下:

本人开发过程中,经常遇到,要去拷贝模板到当前文件夹,经常要去托文件,为了省事,解决这个问题,写了一个node复制文件。

// js/app.js:指定确切的文件名。
// js/*.js:某个目录所有后缀名为js的文件。
// js/**/*.js:某个目录及其所有子目录中的所有后缀名为js的文件。
// !js/app.js:除了js/app.js以外的所有文件。
// *.+(js|css):匹配项目根目录下,所有后缀名为js或css的文件。
//流 stream  管道 pipe 管道
//如果想在读取流和写入流的时候做完全的控制,可以使用数据事件。但对于单纯的文件复制来说读取流和写入流可以通过管道来传输数据。
var fs = require("fs");
var path = require("path");
/*
 * 复制目录中的所有文件包括子目录
 * @src param{ String } 需要复制的目录  例 images 或者 ./images/
 * @dst param{ String } 复制到指定的目录  例 images images/
 */
//获取当前目录绝对路径,这里resolve()不传入参数
var filePath = path.resolve();
var copy = function(src,dst){
  //判断文件需要时间,则必须同步
  if(fs.existsSync(src)){
    fs.readdir(src,function(err,files){
      if(err){console.log(err);return;}
      files.forEach(function(filename){
        //url+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“
        var url = path.join(src,filename),
          dest = path.join(dst,filename);
          console.log(url);
          console.log(dest);
        fs.stat(path.join(src,filename),function(err, stats){
          if (err) throw err;
           //是文件
          if(stats.isFile()){
            //创建读取流
            readable = fs.createReadStream(url);
            //创建写入流 
            writable = fs.createWriteStream(dest,{ encoding: "utf8" });
            // 通过管道来传输流
            readable.pipe(writable);
          //如果是目录
          }else if(stats.isDirectory()){
            exists( url, dest, copy );
          }
        });
      });
    });
  }else{
    console.log("给定的目录不存,读取不到文件");
    return;
  }
}
function exists(url,dest,callback){
  fs.exists(dest,function(exists){
    if(exists){
      callback && callback(url,dest);
    }else{
      //第二个参数目录权限 ,默认0777(读写权限)
      fs.mkdir(dest,0777,function(err){
        if (err) throw err;
        callback && callback(url,dest);
      });
    }
  });
}
exports.copy = copy;
//copy("./views/","./www/");
copy("./../jdcase/homeappliances/",filePath);

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
基于jQuery UI CSS Framework开发Widget的经验
Aug 21 Javascript
jQuery1.5.1 animate方法源码阅读
Apr 05 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
JS控制文本域只读或可写属性的方法
Jun 24 Javascript
AngularJs验证重复密码的方法(两种)
Nov 25 Javascript
详解JavaScript模块化开发
Dec 04 Javascript
纯js实现倒计时功能
Jan 06 Javascript
小程序实现列表点赞功能
Nov 02 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
Vue中rem与postcss-pxtorem的应用详解
Nov 20 Javascript
vue element 关闭当前tab 跳转到上一路由操作
Jul 22 Javascript
详解微信小程序——自定义圆形进度条
Dec 29 #Javascript
JS作用域深度解析
Dec 29 #Javascript
javascript中的深复制详解及实例分析
Dec 29 #Javascript
canvas学习之API整理笔记(一)
Dec 29 #Javascript
Javascript Function.prototype.bind详细分析
Dec 29 #Javascript
jQuery自定义插件详解及实例代码
Dec 29 #Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 #Javascript
You might like
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
javascript 主动派发事件总结
2011/08/09 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
详解Python当中的字符串和编码
2015/04/25 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
python获取地震信息 微信实时推送
2019/06/18 Python
python中count函数简单的实例讲解
2020/02/06 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
跳蚤市场口号
2014/06/13 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
全陪导游词开场白
2015/05/29 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
创业计划书之美容店
2019/09/16 职场文书
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL