Node.js 是一款基于 Chrome V8 引擎的 JavaScript 运行时,它提供了许多强大的 API,包括文件系统 API 和行读写 API,使得我们可以轻松地对文件进行读写和处理。
本文将为大家讲解如何使用 Node.js 的 readline API 对文件进行逐行读取和写入。具体步骤如下:
步骤一:引入 readline 和 fs 模块
首先,我们需要在 Node.js 中引入 readline 和 fs 两个核心模块,其中 readline 模块是用来读取和写入行文本的 API,fs 模块是用于访问文件系统的 API。
const readline = require('readline');
const fs = require('fs');
步骤二:创建 readline 接口对象
接下来,我们需要创建 readline 接口对象,在该对象中我们可以指定读取文件的位置和格式等参数,以及回调函数来处理每一行读取到的数据。
const rl = readline.createInterface({
input: fs.createReadStream('input.txt'), // 读取文件的位置和格式
crlfDelay: Infinity // 确保逐行读取,不会出现文本数据被截断或者分段的情况
});
步骤三:逐行读取文件数据
现在我们可以通过 readline 接口对象来逐行读取文件数据了,在每一行读取完毕后,该接口对象会触发 'line' 事件向回调函数传递数据,我们可以在该回调函数中对该行数据进行处理或者写入到另一个文件中。
rl.on('line', (line) => {
console.log(`Line from file: ${line}`);
// 每读取一行数据,我们可以将其写入到 output.txt 文件中
fs.appendFileSync('output.txt', line + '\n');
});
步骤四:结束读取过程
最后,当我们处理完所有的数据后,我们需要关闭 readline 接口对象,以便释放系统资源和避免内存泄漏。
rl.on('close', () => {
console.log('Readline process has been completed!');
});
综上所述,以上是 Node.js readline 逐行读取、写入文件内容的示例的完整攻略。下面还给出另外两个示例说明:
示例1:逐行读取文件并按照一定规则进行处理
const rl = readline.createInterface({
input: fs.createReadStream('input.txt'),
crlfDelay: Infinity
});
rl.on('line', (line) => {
const words = line.split(' ');
const reversedWords = words.map((word) => {
return word.split('').reverse().join('');
});
const processedLine = reversedWords.join(' ');
console.log(`Processed line: ${processedLine}`);
});
上述示例中,我们将读取到的每一行数据按照空格分割成单词数组,然后将每个单词反转,最后将处理过的单词数组合并成一行文本,输出到控制台。
示例2:将读取的文件数据按照一定规则输出到不同的文件中
const rl = readline.createInterface({
input: fs.createReadStream('input.txt'),
crlfDelay: Infinity
});
let fileNum = 0;
let ws = null;
rl.on('line', (line) => {
if (ws == null || line.startsWith('--')) {
if (ws != null) {
ws.end();
}
fileNum++;
ws = fs.createWriteStream(`output${fileNum}.txt`);
}
ws.write(line + '\n');
});
上述示例中,文件中的每一行数据以 “--” 开头可以表示数据的分类,我们通过判断每一行数据的开头是否为“--”,来决定将该行数据写入到哪个输出文件中。例如,所有以“--A”开头的数据都被写入到“output1.txt”,以“--B”开头的数据都被写入到“output2.txt” 中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js readline 逐行读取、写入文件内容的示例 - Python技术站