zoukankan      html  css  js  c++  java
  • 【Node.js】'readline' 逐行读取、写入文件内容

    []运用readline逐行读取的两种实现


    效果图如下:

    左边1.log 为源文件

    右边1.readline.log为复制后的文件

    下边为命令行输出



    实现方式一:

    [javascript] view plain copy
    1. var readline = require('readline');  
    2. var fs = require('fs');  
    3. var os = require('os');  
    4.   
    5. var fReadName = './1.log';  
    6. var fWriteName = './1.readline.log';  
    7. var fRead = fs.createReadStream(fReadName);  
    8. var fWrite = fs.createWriteStream(fWriteName);  
    9.   
    10.   
    11. var objReadline = readline.createInterface({  
    12.     input: fRead,  
    13. // 这是另一种复制方式,这样on('line')里就不必再调用fWrite.write(line),当只是纯粹复制文件时推荐使用  
    14. // 但文件末尾会多算一次index计数   sodino.com  
    15. //  output: fWrite,   
    16. //  terminal: true  
    17. });  
    18.   
    19.   
    20. var index = 1;  
    21. objReadline.on('line', (line)=>{  
    22.     var tmp = 'line' + index.toString() + ':' + line;  
    23.     fWrite.write(tmp + os.EOL); // 下一行  
    24.     console.log(index, line);  
    25.     index ++;  
    26. });  
    27.   
    28. objReadline.on('close', ()=>{  
    29.     console.log('readline close...');  
    30. });  


    实现方式二:

    [javascript] view plain copy
    1. var readline = require('readline');  
    2. var fs = require('fs');  
    3. var os = require('os');  
    4.   
    5. var fReadName = './1.log';  
    6. var fWriteName = './1.readline.log';  
    7. var fRead = fs.createReadStream(fReadName);  
    8. var fWrite = fs.createWriteStream(fWriteName);  
    9.   
    10. var enableWriteIndex = true;  
    11. fRead.on('end', ()=>{  
    12.     console.log('end');  
    13.     enableWriteIndex = false;  
    14. });  
    15.   
    16. var objReadline = readline.createInterface({  
    17.     input: fRead,  
    18.     output: fWrite,   
    19.     terminal: true  
    20. });  
    21.   
    22.   
    23. var index = 1;  
    24. fWrite.write('line' + index.toString() +':');  
    25. objReadline.on('line', (line)=>{  
    26.     console.log(index, line);  
    27.     if (enableWriteIndex) {  
    28.         // 由于readline::output是先写入后调用的on('line')事件,  
    29.         // 所以已经读取文件完毕时就不需要再写行号了... sodino.com  
    30.         index ++;  
    31.         var tmp = 'line' + index.toString() + ':';  
    32.         fWrite.write(tmp);        
    33.     }  
    34. });  
    35.   
    36.   
    37.   
    38. objReadline.on('close', ()=>{  
    39.     console.log('readline close...');  
    40. });  

  • 相关阅读:
    [unity3d程序] 纹理扩散
    深入浅出SharePoint——自定义带ECB列
    深入浅出TFS——工作区Workspace
    深入浅出SharePoint——部署WSP
    深入浅出SharePoint——批处理高效导入数据
    深入浅出SharePoint——Log4net应用
    遍历文件夹及文件
    深入浅出SharePoint——使用CAML定制View
    拷贝文件到另一台电脑
    深入浅出SharePoint——在自定义表单中使用上传附件控件
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/7543190.html
Copyright © 2011-2022 走看看