Maison  >  Article  >  interface Web  >  Comment readline lit et écrit le contenu ligne par ligne

Comment readline lit et écrit le contenu ligne par ligne

php中世界最好的语言
php中世界最好的语言original
2018-04-12 15:10:224216parcourir

Cette fois, je vais vous expliquer readline comment lire et écrire du contenu ligne par ligne, et précautions pour lire et écrire du contenu ligne par ligne avec readline Qu'est-ce que c'est ? Voici des cas concrets.

Cet article présente deux implémentations de lecture ligne par ligne à l'aide de readline et les partage avec tout le monde, comme suit :

Qu'est-ce que Readline

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

Le rendu est le suivant :

1.log à gauche est le fichier source

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

Voici le résultat de la ligne de commande

Première méthode de mise en œuvre :

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 de mise en œuvre 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...'); 
});

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres. articles connexes sur le site php chinois !

Lecture recommandée :

Vuex mutations et actions détaillées explication d'utilisation

Comment utiliser les espaces réservés dans Vue

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