91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

詳解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

确山县| 甘德县| 搜索| 垦利县| 奉新县| 阜康市| 西城区| 会东县| 南靖县| 什邡市| 海门市| 边坝县| 鄱阳县| 吴旗县| 睢宁县| 赣州市| 壤塘县| 林周县| 库车县| 武川县| 运城市| 永安市| 汪清县| 阿鲁科尔沁旗| 神农架林区| 芒康县| 辉县市| 隆回县| 正宁县| 九龙坡区| 日照市| 乌兰浩特市| 葵青区| 綦江县| 土默特左旗| 和田县| 应城市| 石嘴山市| 常宁市| 玉屏| 天镇县|