Node.js复制文件的方法示例
本文实例讲述了Node.js复制文件的方法。分享给大家供大家参考,具体如下:
本人开发过程中,经常遇到,要去拷贝模板到当前文件夹,经常要去托文件,为了省事,解决这个问题,写了一个node复制文件。
//js/app.js:指定确切的文件名。
//js/*.js:某个目录所有后缀名为js的文件。
//js/**/*.js:某个目录及其所有子目录中的所有后缀名为js的文件。
//!js/app.js:除了js/app.js以外的所有文件。
//*.+(js|css):匹配项目根目录下,所有后缀名为js或css的文件。
//流stream管道pipe管道
//如果想在读取流和写入流的时候做完全的控制,可以使用数据事件。但对于单纯的文件复制来说读取流和写入流可以通过管道来传输数据。
varfs=require("fs");
varpath=require("path");
/*
*复制目录中的所有文件包括子目录
*@srcparam{String}需要复制的目录例images或者./images/
*@dstparam{String}复制到指定的目录例imagesimages/
*/
//获取当前目录绝对路径,这里resolve()不传入参数
varfilePath=path.resolve();
varcopy=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系统是”\“
varurl=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)throwerr;
//是文件
if(stats.isFile()){
//创建读取流
readable=fs.createReadStream(url);
//创建写入流
writable=fs.createWriteStream(dest,{encoding:"utf8"});
//通过管道来传输流
readable.pipe(writable);
//如果是目录
}elseif(stats.isDirectory()){
exists(url,dest,copy);
}
});
});
});
}else{
console.log("给定的目录不存,读取不到文件");
return;
}
}
functionexists(url,dest,callback){
fs.exists(dest,function(exists){
if(exists){
callback&&callback(url,dest);
}else{
//第二个参数目录权限,默认0777(读写权限)
fs.mkdir(dest,0777,function(err){
if(err)throwerr;
callback&&callback(url,dest);
});
}
});
}
exports.copy=copy;
//copy("./views/","./www/");
copy("./../jdcase/homeappliances/",filePath);
希望本文所述对大家nodejs程序设计有所帮助。