この記事では、Node.js でファイルを記述する 3 つの方法を紹介します。具体的な内容は次のとおりです。
1. パイプ フローを通じてファイルを書き込む
パイプを使用してバイナリ ストリームを送信すると、書き込み可能なストリームが高速でクラッシュすることを心配する必要がなくなります (推奨)
。
var readStream = fs.createReadStream(decodeURIComponent(root + filepath.pathname)); // 必须解码url readStream.pipe(res); // 管道传输 res.writeHead(200,{ 'Content-Type' : contType }); // 出错处理 readStream.on('error', function() { res.writeHead(404,'can not find this page',{ 'Content-Type' : 'text/html' }); readStream.pause(); res.end('404 can not find this page'); console.log('error in writing or reading '); });
2. ストリーム書き込みを手動で管理する
手動管理フロー。大小のファイルの処理に適しています
var readStream = fs.createReadStream(decodeURIComponent(root + filepath.pathname)); res.writeHead(200,{ 'Content-Type' : contType }); // 当有数据可读时,触发该函数,chunk为所读取到的块 readStream.on('data',function(chunk) { res.write(chunk); }); // 出错时的处理 readStream.on('error', function() { res.writeHead(404,'can not find this page',{ 'Content-Type' : 'text/html' }); readStream.pause(); res.end('404 can not find this page'); console.log('error in writing or reading '); }); // 数据读取完毕 readStream.on('end',function() { res.end(); });
3. データの読み取りと書き込みを一度に行う
ファイルのすべての内容を一度に読み取ります。小さいファイルに適しています (推奨されません)
fs.readFile(decodeURIComponent(root + filepath.pathname), function(err, data) { if(err) { res.writeHead(404,'can not find this page',{ 'Content-Type' : 'text/html' }); res.write('404 can not find this page'); }else { res.writeHead(200,{ 'Content-Type' : contType }); res.write(data); } res.end(); });
以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。