欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Nodejs 通過 fs.createWriteStream 保存文件

 更新時間:2017年10月10日 09:01:18   作者:durban  
本篇文章主要介紹了Nodejs 通過 fs.createWriteStream 保存文件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

工作中難免會遇到處理大文件的時候,有這種stream的處理方式,就不需要一次處理太大的文件,從而導(dǎo)致內(nèi)存不夠用,或者內(nèi)存占用太多。

fs.createWriteStream 似乎不會自己創(chuàng)建不存在的文件夾,所以在使用之前需要注意,保存文件的文件夾一定要提前創(chuàng)建。

const path = '/xxxxxx/ddd/';

if (!fs.existsSync(path)) {
 fs.mkdirSync(path);
}

創(chuàng)建完文件夾,我們就可以進(jìn)行文件添加操作了。我們希望在使用文件添加操作的時候是通過saveFile(filePath, fileData);這樣的方式來調(diào)用。

這里我采用了Promise的方式,個人比較喜歡這樣的方式

 /**
  * [saveFileWithStream description]
  * @param {String} filePath [文件路徑]
  * @param {Buffer} readData [Buffer 數(shù)據(jù)]
  */
 static saveFile(filePath, fileData) {
  return new Promise((resolve, reject) => {
   // 塊方式寫入文件
   const wstream = fs.createWriteStream(filePath);

   wstream.on('open', () => {
    const blockSize = 128;
    const nbBlocks = Math.ceil(fileData.length / (blockSize));
    for (let i = 0; i < nbBlocks; i += 1) {
     const currentBlock = fileData.slice(
      blockSize * i,
      Math.min(blockSize * (i + 1), fileData.length),
     );
     wstream.write(currentBlock);
    }

    wstream.end();
   });
   wstream.on('error', (err) => { reject(err); });
   wstream.on('finish', () => { resolve(true); });
  });
 }

實(shí)際調(diào)用的時候,如下

try {
 await saveFileWithStream(filePath, fileData); // 這里的fileData是Buffer類型
} catch (err) {
 console.log(err.stack);
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 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一個標(biāo)準(zhǔn),它描述了異步調(diào)用的返回結(jié)果,包括正確返回結(jié)果和錯誤處理,需要的朋友可以參考下
    2014-09-09
  • node.js使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓操作示例

    node.js使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓操作示例

    這篇文章主要介紹了node.js使用zlib模塊進(jìn)行數(shù)據(jù)壓縮和解壓操作,結(jié)合實(shí)例形式詳細(xì)分析了node.js基于zlib模塊創(chuàng)建數(shù)據(jù)流以及壓縮和解壓縮等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • NodeJS實(shí)現(xiàn)一個聊天室功能

    NodeJS實(shí)現(xiàn)一個聊天室功能

    這篇文章主要介紹了NodeJS實(shí)現(xiàn)一個聊天室功能,本文實(shí)例截圖相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Nodejs之http的表單提交

    Nodejs之http的表單提交

    這篇文章主要為大家詳細(xì)介紹了Nodejs之http的表單提交,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • node+axios實(shí)現(xiàn)服務(wù)端文件上傳示例

    node+axios實(shí)現(xiàn)服務(wù)端文件上傳示例

    這篇文章主要介紹了node+axios實(shí)現(xiàn)服務(wù)端文件上傳示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • node連接kafka2.0實(shí)現(xiàn)方法示例

    node連接kafka2.0實(shí)現(xiàn)方法示例

    這篇文章主要介紹了node連接kafka2.0,nodejs連接kafka2.0的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了kafka2.0的功能、原理、以及node.js連接kafka2.0的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2023-05-05
  • Node.js編程中客戶端Session的使用詳解

    Node.js編程中客戶端Session的使用詳解

    這篇文章主要介紹了Node.js編程中客戶端Session的使用詳解,是Node.js入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-06-06
  • node.js 如何監(jiān)視文件變化

    node.js 如何監(jiān)視文件變化

    這篇文章主要介紹了node.js 如何監(jiān)視文件變化,幫助大家更好的理解和學(xué)習(xí)node.js,感興趣的朋友可以了解下
    2020-09-09
  • nodejs實(shí)現(xiàn)UDP組播示例方法

    nodejs實(shí)現(xiàn)UDP組播示例方法

    這篇文章主要介紹了nodejs實(shí)現(xiàn)UDP組播示例方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 使用Node.js find-up在父目錄中高效尋找文件與目錄

    使用Node.js find-up在父目錄中高效尋找文件與目錄

    find-up 是一個小巧但功能強(qiáng)大的 Node.js 包,它能幫助我們實(shí)現(xiàn)這一需求,本文將深入探究如何使用 find-up 進(jìn)行有效搜索,并結(jié)合豐富的代碼演示幫助大家快速掌握其用法,需要的朋友可以參考下
    2024-05-05

最新評論