var fs=require('fs'); var stat=fs.stat; var copy=function(src,dst){ //讀取目錄 fs.readdir(src,function(err,paths){ console.log(paths) if(err){ throw err; } paths.forEach(function(path){ var _src=src+'/'+path; var _dst=dst+'/'+path; var readable; var writable; stat(_src,function(err,st){ if(err){ throw err; } if(st.isFile()){ readable=fs.createReadStream(_src);//創建讀取流 writable=fs.createWriteStream(_dst);//創建寫入流 readable.pipe(writable); }else if(st.isDirectory()){ exists(_src,_dst,copy); } }); }); }); } var exists=function(src,dst,callback){ //測試某個路徑下文件是否存在 fs.exists(dst,function(exists){ if(exists){//不存在 callback(src,dst); }else{//存在 fs.mkdir(dst,function(){//創建目錄 callback(src,dst) }) } }) } exists('../from','../to',copy)