nodejs实现文件的拷贝复制

本文详细介绍了如何使用Node.js进行文件及目录的复制操作,包括读取目录、判断文件类型、创建读写流以及处理目录递归复制的过程。通过具体代码示例,深入解析了文件复制的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nodejs实现文件的拷贝复制

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

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 );

  

分类: node

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值