fs-readline
按行读取文件,基于文件可读流。
安装
$ npm install fs-readline
或者直接从 GitHub 上安装。
$ npm install 52cik/fs-readline
使用
var readLine = ;var rl = ;rl;
编码处理
node 支持的编码非常有限, 对于那些不支持的编码可以使用一些第三方库转换, 例如 iconv-lite 模块。
PS: 记得加
retainBuffer
参数防止默认toString
哦。
var readLine = ;var iconv = ;var rl = ; // buffer 模式rl;
参数说明
仅仅只有 4 个附加参数,其他参数继承自 fs.createReadStream
参数。
retainBuffer
是否保留 Buffer 数据,而不是转为字符串,默认 false 转为字符串。
var readLine = ;var rl = ; // buffer 模式rl;
blankLine
blankLine 是否忽略空行,默认 true 不忽略。
假设有个 file.txt 文件,有如下 5 行内容。
// file.txt
111
222
333
var readLine = ;var rl = ;rl;// 输出为:// 1 '111'// 3 '222'// 5 '333'
行号依然是对应的行号,如果要得到连续的新行号,请自己计数。
maxLineLength
maxLineLength 行缓冲大小,默认 8k,也就是一行最多只能容纳 8k 的字符内容。
cutMode
截断模式,默认 false,需 maxLineLength 配合使用,直接看例子好了。
假设有个 file.txt 文件,有如下 5 行内容。
// file.txt
111111
22
333333
444
555555
var readLine = ;var rl = ; // 截断模式,一行最多容纳 4 个字符rl;/*** 输出为:* 1 '1111'* 2 '22'* 3 '3333'* 4 '444'* 5 '5555'*/
非常简单直观,行长度超过 4 的都被截断了,在某些特定的场景下还是比较适用的。
方法说明
readLine#abort 终止
假设有个 file.txt 文件,有如下 5 行内容。
// file.txt
111111
22
333333
444
555555
var readLine = ;var rl = ;rl;/*** 输出为:* 1 '1111'* 2 '22'* 3 '3333'* 读取已终止* 文件已关闭*/