Maison  >  Article  >  interface Web  >  Comment utiliser readline dans Node.js pour lire et écrire le contenu d'un fichier ligne par ligne

Comment utiliser readline dans Node.js pour lire et écrire le contenu d'un fichier ligne par ligne

亚连
亚连original
2018-06-02 11:44:432783parcourir

Cet article présente principalement des exemples de lecture et d'écriture de contenu de fichier Node.js ligne par ligne. Deux implémentations de lecture ligne par ligne à l'aide de readline sont maintenant partagées avec vous et peuvent être utilisées comme référence.

Cet article présente deux implémentations de lecture ligne par ligne à l'aide de readline et les partage avec tout le monde. Les détails sont les suivants :

Qu'est-ce que Readline

Readline est un module packagé qui implémente les entrées et sorties standard dans Node.js. Grâce à ce module, nous pouvons lire le flux de données ligne par ligne. Les modules peuvent être référencés à l'aide de require("readline").

Le rendu est le suivant :

1.log à gauche est le fichier source

1.readline.log à droite est le fichier copié

La ligne de commande est en bas Sortie

Méthode d'implémentation 1 :

var readline = require('readline'); 
var fs = require('fs'); 
var os = require('os'); 
var fReadName = './1.log'; 
var fWriteName = './1.readline.log'; 
var fRead = fs.createReadStream(fReadName); 
var fWrite = fs.createWriteStream(fWriteName); 
var objReadline = readline.createInterface({ 
 input: fRead, 
// 这是另一种复制方式,这样on('line')里就不必再调用fWrite.write(line),当只是纯粹复制文件时推荐使用 
// 但文件末尾会多算一次index计数 sodino.com 
// output: fWrite, 
// terminal: true 
}); 
 
 
var index = 1; 
objReadline.on('line', (line)=>{ 
 var tmp = 'line' + index.toString() + ':' + line; 
 fWrite.write(tmp + os.EOL); // 下一行 
 console.log(index, line); 
 index ++; 
}); 
 
objReadline.on('close', ()=>{ 
 console.log('readline close...'); 
});

Méthode d'implémentation deux :

var readline = require('readline'); 
var fs = require('fs'); 
var os = require('os'); 
 
var fReadName = './1.log'; 
var fWriteName = './1.readline.log'; 
var fRead = fs.createReadStream(fReadName); 
var fWrite = fs.createWriteStream(fWriteName); 
 
var enableWriteIndex = true; 
fRead.on('end', ()=>{ 
 console.log('end'); 
 enableWriteIndex = false; 
}); 
 
var objReadline = readline.createInterface({ 
 input: fRead, 
 output: fWrite, 
 terminal: true 
}); 
 
var index = 1; 
fWrite.write('line' + index.toString() +':'); 
objReadline.on('line', (line)=>{ 
 console.log(index, line); 
 if (enableWriteIndex) { 
 // 由于readline::output是先写入后调用的on('line')事件, 
 // 所以已经读取文件完毕时就不需要再写行号了... sodino.com 
 index ++; 
 var tmp = 'line' + index.toString() + ':'; 
 fWrite.write(tmp); 
 } 
}); 


objReadline.on('close', ()=>{ 
 console.log('readline close...'); 
});

Ce qui précède est ce que j'ai compilé pour vous. J'espère que cela vous sera utile à l'avenir.

Articles connexes :

Principe et implémentation de l'utilisation du module webpack pour empaqueter Library

Explication approfondie des principes de base du webpack module

Comment utiliser Vuex pour implémenter la fonction de compteur

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn