本文實例講述了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程序設計有所幫助。
新聞熱點
疑難解答