亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在Node.js中實(shí)現(xiàn)文件復(fù)制的方法和實(shí)例

 更新時(shí)間:2014年06月05日 09:01:40   作者:  
這篇文章主要介紹了在Node.js中實(shí)現(xiàn)文件復(fù)制的方法和實(shí)例,使用FS模塊實(shí)現(xiàn),需要的朋友可以參考下

Node.js 本身并沒(méi)有提供直接復(fù)制文件的 API,如果想用 Node.js 復(fù)制文件或目錄,需要借助其他的 API 來(lái)實(shí)現(xiàn)。復(fù)制單個(gè)的文件可以直接用 readFile、writeFile,這樣比較簡(jiǎn)便。如果是復(fù)制一個(gè)目錄下的所有文件,目錄下可能還包含了子目錄,那么此時(shí)就需要用到更高級(jí)點(diǎn)的 API 了。

流是 Node.js 移動(dòng)數(shù)據(jù)的方式,Node.js 中的流是可讀/可寫(xiě)的,HTTP 和文件系統(tǒng)模塊都有用到流。在文件系統(tǒng)中,使用流來(lái)讀取文件的時(shí)候,對(duì)于一個(gè)大文件可能并不會(huì)一次性讀取完,而是會(huì)分好幾次讀取完,讀取的時(shí)候會(huì)響應(yīng)數(shù)據(jù)事件,在文件沒(méi)讀取完的時(shí)候就可以對(duì)讀取的數(shù)據(jù)進(jìn)行操作。同理,在寫(xiě)入流的時(shí)候也和讀取時(shí)一樣,大文件并不會(huì)一次性寫(xiě)入。這種移動(dòng)數(shù)據(jù)的方式是非常高效的,尤其是對(duì)于大文件而言,使用流比等待將大文件全部讀取完再來(lái)操作文件要快得多。

管道

如果想在讀取流和寫(xiě)入流的時(shí)候做完全的控制,可以使用數(shù)據(jù)事件。但對(duì)于單純的文件復(fù)制來(lái)說(shuō)讀取流和寫(xiě)入流可以通過(guò)管道來(lái)傳輸數(shù)據(jù)。

實(shí)際應(yīng)用:

復(fù)制代碼 代碼如下:

var fs = require( 'fs' ),
    stat = fs.stat;

/*
 * 復(fù)制目錄中的所有文件包括子目錄
 * @param{ String } 需要復(fù)制的目錄
 * @param{ String } 復(fù)制到指定的目錄
 */
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() ){
                    // 創(chuàng)建讀取流
                    readable = fs.createReadStream( _src );
                    // 創(chuàng)建寫(xiě)入流
                    writable = fs.createWriteStream( _dst );  
                    // 通過(guò)管道來(lái)傳輸流
                    readable.pipe( writable );
                }
                // 如果是目錄則遞歸調(diào)用自身
                else if( st.isDirectory() ){
                    exists( _src, _dst, copy );
                }
            });
        });
    });
};

// 在復(fù)制目錄前需要判斷該目錄是否存在,不存在需要先創(chuàng)建目錄
var exists = function( src, dst, callback ){
    fs.exists( dst, function( exists ){
        // 已存在
        if( exists ){
            callback( src, dst );
        }
        // 不存在
        else{
            fs.mkdir( dst, function(){
                callback( src, dst );
            });
        }
    });
};

// 復(fù)制目錄
exists( './src', './build', copy );

相關(guān)文章

  • 淺談node使用jwt生成的token應(yīng)該存在哪里

    淺談node使用jwt生成的token應(yīng)該存在哪里

    早上逛某乎的時(shí)候,遇到一位同學(xué)在問(wèn)這個(gè)問(wèn)題,很好奇jwt的存儲(chǔ)位置。本文詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-06-06
  • nodejs中使用monk訪問(wèn)mongodb

    nodejs中使用monk訪問(wèn)mongodb

    最近在做nodejs的web開(kāi)發(fā),初次接觸到mongoDB這個(gè)數(shù)據(jù)庫(kù)。分享點(diǎn)使用經(jīng)驗(yàn)
    2014-07-07
  • 2019最新21個(gè)MySQL高頻面試題介紹

    2019最新21個(gè)MySQL高頻面試題介紹

    又到了一年的面試季,今年情況特殊,很多人可能都窩在家里,也有一些人準(zhǔn)備找工作,但是疫情嚴(yán)重,也沒(méi)企業(yè)發(fā)招聘信息。這個(gè)時(shí)候,最好的做法就是在家里刷面試題
    2020-02-02
  • npm?install常見(jiàn)報(bào)錯(cuò)以及問(wèn)題詳解

    npm?install常見(jiàn)報(bào)錯(cuò)以及問(wèn)題詳解

    npm?install總是一言難盡,下面這篇文章主要給大家介紹了關(guān)于npm?install常見(jiàn)報(bào)錯(cuò)以及問(wèn)題的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • node快速搭建后臺(tái)的實(shí)現(xiàn)步驟

    node快速搭建后臺(tái)的實(shí)現(xiàn)步驟

    本文主要介紹了node快速搭建后臺(tái),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Node 使用express-http-proxy 做api網(wǎng)關(guān)的實(shí)現(xiàn)

    Node 使用express-http-proxy 做api網(wǎng)關(guān)的實(shí)現(xiàn)

    這篇文章主要介紹了Node 使用express-http-proxy 做api網(wǎng)關(guān)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Node.js中console.log()輸出彩色字體的方法示例

    Node.js中console.log()輸出彩色字體的方法示例

    這篇文章主要給大家介紹了關(guān)于Node.js中console.log()輸出彩色字體的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • nodejs簡(jiǎn)單抓包工具使用詳解

    nodejs簡(jiǎn)單抓包工具使用詳解

    這篇文章主要介紹了nodejs簡(jiǎn)單抓包工具使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • KOA+egg.js集成kafka消息隊(duì)列的示例

    KOA+egg.js集成kafka消息隊(duì)列的示例

    這篇文章主要介紹了KOA+egg.js集成kafka消息隊(duì)列的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • node.js平臺(tái)下利用cookie實(shí)現(xiàn)記住密碼登陸(Express+Ejs+Mysql)

    node.js平臺(tái)下利用cookie實(shí)現(xiàn)記住密碼登陸(Express+Ejs+Mysql)

    這篇文章主要介紹了node.js平臺(tái)下利用cookie實(shí)現(xiàn)記住密碼登陸(Express+Ejs+Mysql),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04

最新評(píng)論