如何使用Node.js的readline模块从TXT文件中读取指定数量的账号行
实现代码
const readline = require("readline"); const fs = require("fs"); // 角色对应账号数量配置 const config = { "yourroleid1": 1500, "yourroleid2": 75, "yourroleid3": 50, "yourroleid4": 20, "yourroleid5": 10, "yourroleid6": 5 } // 替换为当前请求用户的实际roleid const currentRoleId = "yourroleid5"; const maxAccountCount = config[currentRoleId]; let currentCount = 0; const fileStream = fs.createReadStream(__dirname + "/accounts.txt"); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity // 兼容Windows、Linux等不同系统的换行符格式 }); rl.on("line", (line) => { // 过滤空行 const trimmedLine = line.trim(); if (!trimmedLine) return; currentCount++; const [username, password] = trimmedLine.split(':'); // 此处替换为你自己的账号处理逻辑 console.log(`账号:${username},密码:${password}`); // 达到上限后立即停止读取 if (currentCount >= maxAccountCount) { rl.close(); fileStream.destroy(); } }); rl.on("close", () => { console.log(`读取结束,共输出${currentCount}个账号`); // 后续业务逻辑可以写在这里 });
核心说明
- 你之前的代码问题是未在达到行数上限后终止读取流程,文件剩余内容会持续触发
line事件输出多余内容。上述代码在计数达标后调用rl.close()终止readline实例,同时销毁文件流释放资源,不会再产生多余输出。 - 可直接根据当前用户的roleid从配置中读取对应账号上限,无需硬编码数值。
- 新增空行过滤逻辑,避免账号文件中的空白行被误算为有效账号。
内容的提问来源于stack exchange,提问作者Johnty
相关产品推荐
相关产品推荐

