Node复制文件
本人开发过程中,经常遇到,要去拷贝模板到当前文件夹,经常要去托文件,为了省事,解决这个问题,写了一个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,,function(err){
if (err) throw err;
callback && callback(url,dest);
});
}
});
}
exports.copy = copy;
//copy("./views/","./www/");
copy("./../jdcase/homeappliances/",filePath);
Node复制文件的更多相关文章
- node.js 递归复制文件夹(附带文件过滤功能)
		
1.简介: 很简单,写了一个node操作文件的小脚本,主要实现对目标文件夹中内容的复制.还顺带一个按照文件夹或者文件名过滤的功能. 2.应用场景 适合基于 node 环境的项目,项目打包的时候,配合 ...
 - node 删除和复制文件或文件夹
		
[toc] 创建时间:2019-08-12 注意:在win10,v10.16.1 环境运行无问题 首先引入相关包(会在使用处具体说明): const fs = require('fs') const ...
 - node.js流复制文件
		
转自:http://segmentfault.com/a/1190000000519006 nodejs的fs模块并没有提供一个copy的方法,但我们可以很容易的实现一个,比如: var source ...
 - Node JS复制文件
		
/** * Created by Administrator on 2019/11/6. *指尖敲打着世界 ----一个阳光而又不失帅气的少年!!!. */ var fs=require(" ...
 - Nodejs 复制文件/文件夹
		
1.使用fs复制文件 使用fs对象的readFileSync,writeFileSync方法进行读写操作复制 cp.js function copyIt(from, to) { fs.writeFil ...
 - Nodejs编写复制文件及文件夹命令
		
github地址 use npm i fuzhi -g 复制文件 fuzhi a.js b.js 复制文件夹 fuzhi dirA dirB Wiki 创建一个node命令的两个关键点 1.在pack ...
 - Node.js  文件操作
		
1.新建一个文件a.txt,并写入"你好,这是一个新文件.". writeFile 代码 demo1.js var fs = require('fs'); console.log( ...
 - Linux 远程复制文件
		
Linux 远程复制文件 如果想把机器A上面的dir目录下面的所有文件复制到机器B的dir目录下,我们可以使用nc命令来完成 在机器A的dir目录下面执行: tar -czf - * | nc -l ...
 - 复制文件的问题:使用FileInputStream和FileOutputStream实现文件复制
		
public class Test{ public static void main(String [] args) { Test t=new Test(); t.upload(); } public ...
 
随机推荐
- datatable删除一行方法
			
t.row($(e).parents('tr')[0]).remove().draw(false); t为定义的datatable对象,row里面传入当前行的DOM元素.
 - Blender 建模
			
1.多图层切换 Blender也有图层的概念,我们在一个图层上建立了一个模型,可以在另外一个图层新建一个独立的模型.界面底部包含了Layer切换按钮.如下图所示: 当前我们正在操作第一个图层,如果想在 ...
 - mysql中删除binlog的方法?mysql中如何删除binlog?
			
需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...
 - Oracle创建directory
			
Oracle创建directory 一般创建directory都是为了用数据泵导入/导出数据用,其实directory还有很多别的用处,本文不做阐述 1.新建directory的语法 CREA ...
 - oracle long类型转换成varchar2
			
CREATE OR REPLACE FUNCTION LONG_TO_CHAR( in_rowid rowid,in_owner varchar,in_table_name varchar,in_co ...
 - [RN] 01 - Init: Try a little bit of React Native
			
Ref: React Native跨平台移动应用开发 后记:这本书博客味有点浓. 本篇涉及新建工程的若干套路,以及一点语法知识. 创建新工程 (1) 解决的一大核心问题: (2) 使用Javascri ...
 - Matlab 随机数字
			
1.随机生成仅仅有0.1元素的矩阵(m行n列) A=round(rand(m,n)) 2.随机生成每行有若干个0,1元素的矩阵,比方每行仅仅有2个元素为1,其它元素为0 A=zeros(4,5) fo ...
 - SpringMVC -- 梗概--源码--壹--收参
			
附:实体类 Class : User package com.c61.entity; import java.text.SimpleDateFormat; import java.util.Date; ...
 - ios开发之--NSString的操作
			
NSString的操作,下面记录下他的常用方法: NSString *str = @"1111111111aaaaaaaaa2222222222"; 1.查找 //查找 NSRan ...
 - iOS 将Excel导入到SQLite3的过程
			
1.打开Excel表格,另存为.csv文件 2.打开SQLite3,选择File -> Import -> other... 3.在弹出的文件选择框中选择步骤1保存的.cvs文件 4在弹出 ...