如何在NodeJS控制台程序中逐行读取本地文件?
Node.js 本地文件读取与逐行处理方案(Windows CMD 兼容)
我太懂你这种困扰了——网上搜的JS代码十有八九是给浏览器写的,根本没法直接读取本地磁盘文件。好在Node.js本身就自带了专门处理本地文件的核心模块,完全能满足你在Windows命令提示符里运行的需求,下面给你一个完整的可落地方案:
核心思路
用Node.js内置的fs(文件系统)模块读取本地文件,搭配readline模块实现逐行处理——这种方式内存友好,哪怕是大文件也不会卡顿,而且完美兼容Windows的换行符。
完整可运行代码
const fs = require('fs'); const readline = require('readline'); // 替换成你要读取的本地文件路径(Windows路径支持双反斜杠或正斜杠) const filePath = './your-file.txt'; // 示例绝对路径:'C:\\Users\\YourUsername\\Desktop\\demo.txt' // 存储处理后内容的数组 const processedContent = []; // 创建逐行读取接口,自动识别Windows/Unix换行符 const lineReader = readline.createInterface({ input: fs.createReadStream(filePath), crlfDelay: Infinity }); // 监听每一行读取完成事件,在这里写你的格式化逻辑 lineReader.on('line', (rawLine) => { // 这里替换成你需要的格式化操作,比如去空格、提取关键字等 const formattedLine = rawLine.trim().replace(/\s+/g, ' '); processedContent.push(formattedLine); }); // 监听文件读取完成事件,输出结果 lineReader.on('close', () => { console.log('✅ 文件读取与处理完成!'); console.log('📋 处理后的内容数组:'); console.log(processedContent); });
关键细节说明
- 路径处理:Windows路径可以用双反斜杠(
\\,因为单个反斜杠是转义符),或者直接用正斜杠(/),Node.js会自动适配。 - 换行符兼容:
crlfDelay: Infinity这个配置能让readline正确识别Windows的\r\n换行符,避免出现行内容截断或乱码的问题。 - 格式化逻辑:你可以把示例里的
formattedLine处理代码换成自己的需求——比如转大小写、解析JSON片段、提取特定字段等等。
运行步骤
- 把上面的代码保存为
file-processor.js - 打开Windows命令提示符,切换到代码文件所在的目录(用
cd 你的文件路径命令) - 运行命令:
node file-processor.js - 就能在控制台看到处理后的内容数组了!
小文件同步读取方案(可选)
如果你的文件很小(几MB以内),也可以用同步读取的方式,代码更简洁:
const fs = require('fs'); const filePath = './small-file.txt'; // 同步读取文件并按换行符分割成数组 const fileContent = fs.readFileSync(filePath, 'utf8'); const processedArray = fileContent .split(/\r?\n/) // 兼容Windows和Unix换行符 .map(line => line.trim()) // 格式化每一行 .filter(line => line); // 过滤掉空行 console.log('处理后的内容数组:'); console.log(processedArray);
注意:同步读取会阻塞Node.js进程,大文件不建议用这种方式,还是优先用逐行异步读取的方案。
内容的提问来源于stack exchange,提问作者Kshitij Dhar
相关产品推荐
相关产品推荐

