var fs = require( 'fs' ),
stat = fs.stat;
/*
05
* 復制目錄中的所有文件包括子目錄
06
* @param{ String } 需要復制的目錄
07
* @param{ String } 復制到指定的目錄
08
*/
var copy = function( src, dst ){
// 讀取目錄中的所有文件/目錄
fs.readdir( src, function( err, paths ){
if( err ){
throw err;
}
paths.forEach(function( path ){
var _src = src + '/' + path,
_dst = dst + '/' + path,
readable, 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( './login', './haha', copy );