Cet article présente trois façons d'écrire des fichiers dans Node.js. Le contenu spécifique est le suivant
.1. Écrivez des fichiers via un flux de tuyaux
L'utilisation de canaux pour transmettre des flux binaires peut gérer automatiquement les flux inscriptibles n'a pas à s'inquiéter du crash trop rapide des flux lisibles. Convient aux transferts de fichiers petits et grands (recommandé)
.
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. Gérer manuellement l'écriture du flux
Flux de gestion manuel, adapté au traitement des gros et petits fichiers
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. Lire et écrire des données en une seule fois
Lisez tout le contenu du fichier en même temps, adapté aux petits fichiers (non recommandé)
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(); });
Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.