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!