中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-20 03:46:11 來源:腳本之家 閱讀:2095 作者:durban 欄目:web開發

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

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

const path = '/xxxxxx/ddd/';

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

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

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

 /**
  * [saveFileWithStream description]
  * @param {String} filePath [文件路徑]
  * @param {Buffer} readData [Buffer 數據]
  */
 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); });
  });
 }

實際調用的時候,如下

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

离岛区| 醴陵市| 金门县| 聊城市| 定日县| 广丰县| 大埔县| 黄龙县| 南靖县| 通城县| 西昌市| 波密县| 台北县| 吴旗县| 申扎县| 罗江县| 丹棱县| 衡山县| 正安县| 阳山县| 舒兰市| 德惠市| 平顺县| 商洛市| 紫云| 原阳县| 大埔县| 上栗县| 三门峡市| 九龙坡区| 浪卡子县| 巴塘县| 长岛县| 嵩明县| 诏安县| 六枝特区| 邓州市| 房产| 五河县| 防城港市| 陇南市|