-
ファイルの読み込みとレスポンスへのパイプ:
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レスポンスにパイプしています。これにより、ファイルの内容がストリームとしてチャンクごとに送信され、レスポンスに効率的に転送されます。 -
データの変換とパイプ:
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
モジュールを使用してデータを圧縮しています。パイプを介してストリームを連結することで、データの自動的な転送と変換が行われます。 -
パイプストリームのエラーハンドリング:
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でパイプストリームを使用する基本的な方法と一部のコード例です。パイプストリームは、大量のデータを効率的に処理する際に非常に便利です。さまざまなモジュールや操作で使用することができるため、柔軟かつ高性能なデータ処理を実現することができます。