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 相关文章推荐
ie和firefox中img对象区别的困惑
Dec 27 Javascript
javascript加号"+"的二义性说明
Mar 04 Javascript
JQuery 常用方法和事件详细介绍
Apr 18 Javascript
9行javascript代码获取QQ群成员具体实现
Oct 16 Javascript
javascript常用代码段搜集
Dec 04 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
js查看一个函数的执行时间实例代码
Sep 12 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
vue上传图片组件编写代码
Jul 26 Javascript
浅谈angular4生命周期钩子
Sep 05 Javascript
jQuery中的类名选择器(.class)用法简单示例
May 14 jQuery
详解微信小程序——自定义圆形进度条
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示例代码
2016/08/05 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
列表内容的选择
2006/06/30 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
浅析javascript 定时器
2014/12/23 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
基于python实现学生管理系统
2018/10/17 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
python3的pip路径在哪
2020/06/23 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
自荐信怎么写好
2013/11/11 职场文书
法学毕业生自荐信
2013/11/13 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
分享python函数常见关键字
2022/04/26 Python
oracle数据库去除重复数据
2022/05/20 Oracle