-
Notifications
You must be signed in to change notification settings - Fork 1
/
copy.js
76 lines (73 loc) · 2.2 KB
/
copy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var fs = require( 'fs' );
/*
* 复制目录中的所有文件包括子目录
* @param{ String } 需要复制的目录
* @param{ String } 复制到指定的目录
*/
// 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 );
// });
// }
// });
// };
var copy = function(src, dst){
if(Array.isArray(src)){
src.forEach(function(path){
copy(path, dst)
})
return;
}
var st = fs.statSync(src)
if(st.isFile()){
fs.createReadStream( src ).pipe(fs.createWriteStream( dst ));
}else if(st.isDirectory()){
if(!fs.existsSync(dst)){
fs.mkdirSync(dst)
}
fs.readdirSync(src).forEach(function(path){
// console.log("path=", path)
copy(src + '/' + path, dst + '/' + path)
})
}
}
module.exports = copy