当前位置: 首页 > news >正文

Nodejs-逐行读取文件【简易版】

“勤奋就是成功之母。”‌ —— 茅以升

目录

  • 逐行读取文件四种方法:
  • Node.js 逐行读取文件的核心方法:
    • 同步读取(适用于小文件):
    • 异步流式处理(推荐用于大文件):
      • [使用 readline 模块](https://blog.csdn.net/qq_53002037/article/details/145934201?spm=1001.2014.3001.5501)(原生API):
      • 手动实现流处理:
    • 第三方库(简化操作):
  • 四种方法性能与场景对比:

逐行读取文件四种方法:

  • 用readline模块、
  • fs.readFileSync同步读取并分割、
  • 使用第三方库如line-reader、
  • 以及通过流(stream)手动处理

Node.js 逐行读取文件的核心方法:

Node.js 逐行读取文件的核心方法可分为‌ 同步处理‌和‌异步流式处理‌两大类

同步读取(适用于小文件):

通过 fs.readFileSync 一次性读取全部内容后按换行符拆分,但会阻塞事件循环且内存占用高‌。
简单举例:

const fs = require('fs');
const lines = fs.readFileSync('file.txt', 'utf8').split(/\r?\n/);
lines.forEach(line => console.log(line));

特点:

  • ‌✅ 代码简洁,适合快速处理小型文件
  • ❌ 大文件可能导致内存溢出‌

异步流式处理(推荐用于大文件):

使用 readline 模块(原生API):

使用 readline 模块(原生API),通过流逐行读取,内存效率高且非阻塞‌。
简单举例:

const fs = require('fs');
const readline = require('readline');

const rl = readline.createInterface({
  input: fs.createReadStream('file.txt'),
  crlfDelay: Infinity // 兼容不同系统的换行符
});

rl.on('line', (line) => {
  console.log(line);
}).on('close', () => {
  console.log('读取完成');
});

‌特点‌:

  • ✅ 支持任意大小的文件
  • ✅ 可与其他流(如HTTP请求)结合使用‌

手动实现流处理:

通过监听流的 data 事件逐字节解析换行符,灵活性高但代码复杂度较高‌。

典型场景‌:

  • 需要精确控制换行符逻辑(如处理混合换行符)
  • 实现特定行数的批量读取(如每次读取100行后暂停处理)‌

第三方库(简化操作):

如 line-reader 提供更简洁的API:
简单举例:

const lineReader = require('line-reader');
lineReader.eachLine('file.txt', (line, last) => {
  console.log(line);
  if (last) console.log('处理完毕');
});

特点‌:

  • ✅ API 简洁易用
  • ❌ 增加外部依赖‌

四种方法性能与场景对比:

方法内存占用执行效率适用场景
readFileSync小型文件(<100MB)
readline大型文件/需要流式处理
手动流处理特殊换行符/分批处理需求
第三方库快速开发/非性能敏感场景‌

相关文章:

  • 金融赋能绍兴纺织 民生银行助力外贸中小微企业“走出去”
  • 算法题(81):询问学号
  • 服务器禁止操作汇总(Server Prohibits 0peration Summary)
  • 会话与会话管理:Cookie与Session的深度解析
  • shell中 <<<(Here String)的使用
  • etcd部署硬件资源推荐
  • 搭建数字化生态平台公司:痛点与蚓链解决方案
  • Zookeeper(79)如何进行Zookeeper的监控?
  • 回溯算法中的for循环和递归使用
  • 自动化测试框架设计
  • Unity 优化封装常用API和编辑器扩展工具包
  • Redis的过期策略及其优缺点
  • FPGA之硬件设计笔记-持续更新中
  • python-leetcode-颜色分类
  • 安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类
  • 模拟进程通过系统调用向缓冲区写入并刷新的过程
  • k8s之pod的调度之污点与容忍污点,什么是污点? 如何容忍污点
  • 校园二手交易微信小程序的设计与实现(论文源码调试讲解)
  • 在鸿蒙HarmonyOS手机上安装hap应用
  • 深度学习基础--ResNet50V2网络的讲解,ResNet50V2的复现(pytorch)以及用复现的ResNet50做鸟类图像分类
  • asp.net 4.0网站建设基础教程/一手项目对接app平台
  • 缤纷网站免费做服装/小程序开发工具
  • 手把手教你用动易做网站/哪家培训机构好
  • 做网站的流程 优帮云/站长之家域名查询鹿少女
  • 电子商务网站与普通网站的区别/百度广告屏蔽
  • 椒江网站建设578做网站/引流推广是什么意思