iT邦幫忙

1

【我可以你也可以的Node.js】第十四篇 - Node's file system - 使用串流的方式讀寫檔案

嗨~你好我是 Robin ~ 這篇要分享的是以串流的方式讀寫檔案
上一篇主要以非串流的方式讀寫檔案(也就是緩衝的方式)。
開始之前先簡單用一個例子提一下什麼是串流
串流就像以下的圖,在每個時間點一接受到東西,就先丟出去給另一端。

對比而言緩衝則是相反,所有東西準備好了再一次丟。

串流有什麼好處?
最大的好處就是空間的使用效率。
當我們使用緩衝時,假使檔案很大,比如說來個20GB,那你的記憶體就需要20GB來儲存這些東西,那想必記憶體就會...


此篇學習目標 ◑ω◐ :

  • 使用串流的方式讀寫檔案

讀檔

這邊會用到之前學過的一個東西是EventEmiter(https://ithelp.ithome.com.tw/articles/10230520) 還不知道的可以先看一下~

  1. 建立一個檔案 readme.txt 內容就隨意
  2. 建立一個檔案叫做 fsReadStream.js
    const fs = require('fs');
    
    let result = '';
    
    const reader = fs.createReadStream('readme.txt');
    
    reader.setEncoding('UTF8');
    
    reader.on('data', function(data) {
        console.log(data);
        result += data;
    });
    
    reader.on('end', function() {
        console.log(result);
    });
    
  3. 執行它~

寫檔

建立一個檔案叫做 fsWriteStream.js

const fs = require('fs');

const outputdata = 'Robin~~~~~~~~~~~~~~~~~~~~~~';

const writerStream = fs.createWriteStream('output.txt');
writerStream.write(outputdata, 'UTF8');
writerStream.end();

writerStream.on('finish', function() {
    console.log('');
});

writerStream.on('error', function(err) {
    console.log(err.stack);
});

就可以在目錄看到產生的 output.txt 內容就是剛剛寫的 Robin~~~


此篇到此。
希望有幫助到想初步了解 node file system 的你~
有問題可以底下留言~


尚未有邦友留言

立即登入留言