读取NodeJS中文件的第N行
|
考虑到我知道路径名和行号,我试图提取文件的一行,理想情况下,我希望这样做是在不读取多余文件的情况下进行的。
出于我在这里使用的目的,这是异步还是同步都没有关系。
我当前的(不良)实现如下所示:
function get_line(filename, line_no, callback) {
line_no = parseInt(line_no);
var data = fs.readFileSync(filename, \'utf8\');
var lines = data.split(\"\\n\");
for (var l in lines) {
if (l == line_no - 1) {
callback(null, lines[l].trim());
return;
}
}
throw new Error(\'File end reached without finding line\');
}
我尝试使用createReadStream进行操作,但是数据事件似乎从未触发。谁能提供直接解决此问题的方法,或者向我指出一些NodeJS文件系统交互文档,该文档比标准库API文档具有更多示例驱动力?
没有找到相关结果
已邀请:
3 个回复
田损比报
直接解决方案: 您应该使用slice方法而不是循环。
for(var l in lines)不是遍历数组的最有效方法,您应该这样做:
异步方式:
挂帘妈乡
琶竞捆栓
使用70000行文件显示n°50000行,我得到了以下结果: 真正的0m3.504s 用户0m0.000s sys 0m0.015s 对于与else相同的示例,我得到以下信息: 真正的0m0.540s 用户0m0.015s sys 0m0.031s 这也意味着更低的内存消耗。