NodeJS读取文本文件并按冒号拆分每行内容的实现方案
用Node.js读取并处理names.txt文件
假设你的names.txt内容如下:
NAME1:LAST1 NAME2:LAST2 NAME3:LAST3 NAME4:LAST4
以下是两种常用的实现方案:
异步读取(推荐,非阻塞IO)
使用Node.js内置的fs.promises模块实现异步读取,避免阻塞主线程:
const fs = require('fs').promises; const path = require('path'); async function processNamesFile() { try { // 读取文件内容 const fileContent = await fs.readFile(path.join(__dirname, 'names.txt'), 'utf8'); // 按换行拆分内容,过滤空行后处理每行 const nameList = fileContent.split('\n') .filter(line => line.trim() !== '') .map(line => { const [firstName, lastName] = line.split(':'); return { NAME: firstName.trim(), LAST: lastName.trim() }; }); console.log('处理后的结果:', nameList); return nameList; } catch (err) { console.error('读取或处理文件出错:', err); } } // 调用函数 processNamesFile();
同步读取(适合简单场景)
如果是小型脚本或不需要考虑阻塞的场景,可以用同步读取:
const fs = require('fs'); const path = require('path'); try { const fileContent = fs.readFileSync(path.join(__dirname, 'names.txt'), 'utf8'); const nameList = fileContent.split('\n') .filter(line => line.trim() !== '') .map(line => { const [firstName, lastName] = line.split(':'); return { NAME: firstName.trim(), LAST: lastName.trim() }; }); console.log('处理后的结果:', nameList); } catch (err) { console.error('读取或处理文件出错:', err); }
关键处理细节
- 用
split('\n')拆分每行,同时通过filter过滤空行(避免文件末尾换行导致的无效数据) - 用
split(':')拆分每行的NAME和LAST字段,再用trim()去除可能存在的空格 - 两种方案都包含错误处理,捕获文件不存在、权限不足等异常
内容的提问来源于stack exchange,提问作者SlickNick
相关产品推荐
相关产品推荐

