ノード.jsでのパイプストリームの使用方法


  1. ファイルの読み込みとレスポンスへのパイプ:

    const fs = require('fs');
    const http = require('http');
    const server = http.createServer((req, res) => {
    const readableStream = fs.createReadStream('input.txt');
    readableStream.pipe(res);
    });
    server.listen(3000, () => {
    console.log('Server is running on port 3000');
    });

    上記の例では、createReadStreamメソッドを使用してファイルを読み込み、そのデータをHTTPレスポンスにパイプしています。これにより、ファイルの内容がストリームとしてチャンクごとに送信され、レスポンスに効率的に転送されます。

  2. データの変換とパイプ:

    const fs = require('fs');
    const zlib = require('zlib');
    const readableStream = fs.createReadStream('input.txt');
    const writableStream = fs.createWriteStream('output.txt');
    const gzipStream = zlib.createGzip();
    readableStream.pipe(gzipStream).pipe(writableStream);

    上記の例では、createReadStreamメソッドを使用してファイルを読み込み、createWriteStreamメソッドを使用して別のファイルに書き込んでいます。また、zlibモジュールを使用してデータを圧縮しています。パイプを介してストリームを連結することで、データの自動的な転送と変換が行われます。

  3. パイプストリームのエラーハンドリング:

    const fs = require('fs');
    const readableStream = fs.createReadStream('input.txt');
    const writableStream = fs.createWriteStream('output.txt');
    readableStream.on('error', (err) => {
    console.error('読み込みエラー:', err);
    });
    writableStream.on('error', (err) => {
    console.error('書き込みエラー:', err);
    });
    readableStream.pipe(writableStream);

    パイプストリームでは、エラーハンドリングも重要です。上記の例では、読み込みストリームと書き込みストリームそれぞれにエラーリスナーを追加しています。もし読み込みや書き込み中にエラーが発生した場合、該当するエラーハンドラーが実行されます。

これらはノード.jsでパイプストリームを使用する基本的な方法と一部のコード例です。パイプストリームは、大量のデータを効率的に処理する際に非常に便利です。さまざまなモジュールや操作で使用することができるため、柔軟かつ高性能なデータ処理を実現することができます。