最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

管道

如果想在讀取流和寫入流的時(shí)候做完全的控制,可以使用數(shù)據(jù)事件。但對于單純的文件復(fù)制來說讀取流和寫入流可以通過管道來傳輸數(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)建寫入流
                    writable = fs.createWriteStream( _dst );  
                    // 通過管道來傳輸流
                    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)文章

  • nodejs實(shí)現(xiàn)郵件發(fā)送服務(wù)實(shí)例分享

    nodejs實(shí)現(xiàn)郵件發(fā)送服務(wù)實(shí)例分享

    本文給大家講解的是簡單的使用nodejs搭建郵件發(fā)送服務(wù)的一個(gè)實(shí)例,非常的好用,有需要的小伙伴可以參考下
    2017-03-03
  • Node.js插件的正確編寫方式

    Node.js插件的正確編寫方式

    正如Node.js在官方說明文檔中所言,插件是以動態(tài)方式進(jìn)行鏈接的共享式對象,能夠?qū)avaScript代碼與C/C++庫接駁起來。這意味著我們可以引用任何來自C/C++庫中的內(nèi)容,并通過創(chuàng)建插件的方式將其納入到Node.js當(dāng)中。
    2014-08-08
  • node.js錯(cuò)誤處理之npm無法下載第三方包

    node.js錯(cuò)誤處理之npm無法下載第三方包

    這篇文章主要給大家介紹了關(guān)于node.js錯(cuò)誤處理之npm無法下載第三方包的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • node+express實(shí)現(xiàn)分頁效果

    node+express實(shí)現(xiàn)分頁效果

    這篇文章主要為大家詳細(xì)介紹了node+express實(shí)現(xiàn)分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • node.js中使用q.js實(shí)現(xiàn)api的promise化

    node.js中使用q.js實(shí)現(xiàn)api的promise化

    這篇文章主要介紹了node.js中使用q.js實(shí)現(xiàn)api的promise化,promise一個(gè)標(biāo)準(zhǔn),它描述了異步調(diào)用的返回結(jié)果,包括正確返回結(jié)果和錯(cuò)誤處理,需要的朋友可以參考下
    2014-09-09
  • node管理統(tǒng)計(jì)文件大小并顯示目錄磁盤空間狀態(tài)從零實(shí)現(xiàn)

    node管理統(tǒng)計(jì)文件大小并顯示目錄磁盤空間狀態(tài)從零實(shí)現(xiàn)

    這篇文章主要為大家介紹了node管理統(tǒng)計(jì)文件大小并顯示目錄磁盤空間狀態(tài)的從零實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 詳解如何利用Nodejs構(gòu)建多進(jìn)程應(yīng)用

    詳解如何利用Nodejs構(gòu)建多進(jìn)程應(yīng)用

    這篇文章主要為大家介紹了如何利用Nodejs構(gòu)建多進(jìn)程應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 詳解使用nvm安裝node.js

    詳解使用nvm安裝node.js

    本篇文章主要介紹了詳解nvm安裝node.js,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • node.js中path路徑模塊的使用方法實(shí)例分析

    node.js中path路徑模塊的使用方法實(shí)例分析

    這篇文章主要介紹了node.js中path路徑模塊的使用方法,結(jié)合實(shí)例形式分析了node.js path路徑模塊的基本功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Node.js?搭建后端服務(wù)器內(nèi)置模塊(?http+url+querystring?的使用)

    Node.js?搭建后端服務(wù)器內(nèi)置模塊(?http+url+querystring?的使用)

    這篇文章主要介紹了Node.js搭建后端服務(wù)器內(nèi)置模塊(http+url+querystring的使用),文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09

最新評論

宁河县| 龙陵县| 寿阳县| 赤水市| 太白县| 聊城市| 平阳县| 金山区| 通州区| 南召县| 玉树县| 福鼎市| 南宫市| 喀什市| 江山市| 靖远县| 西安市| 文安县| 建始县| 松潘县| 南开区| 乌拉特前旗| 汶上县| 乌鲁木齐市| 贺兰县| 昌邑市| 彩票| 徐州市| 香格里拉县| 赞皇县| 县级市| 泸西县| 田林县| 芜湖县| 疏勒县| 丰都县| 巴林左旗| 土默特右旗| 鲁甸县| 府谷县| 弋阳县|