区块链技术博客
www.b2bchain.cn

Nodejs如何实现大文件逐行读取求职学习资料

本文介绍了Nodejs如何实现大文件逐行读取求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

每一种技术方案都有一定的适用场景。比如用木头可以建造3层高的楼房,但是100层的摩天大厦木头就难以胜任了。因此面对不同的情况,需要切换不同的技术方案。今天咱们一起聊聊Node文件读取的问题。
Nodejs如何实现大文件逐行读取
我们知道Node的 fs 模块提供了打开文件的方法 readFilereadFileSync,但是在打开文件的时候需要将整个文件都读取到内存中。对于小文件来说这样操作并没有什么问题,如果需要打开几个G大小的文件就可能会出现错误。
Nodejs如何实现大文件逐行读取

如果我们需要读取一个大文件,或者需要在大文件中查找内容,有什么好办法呢?

1. Readline原生实现逐行读取

Readline 是Node.js 的内置模块,专门为此目的开发的ーー每次从任何可读的流中读取一行。您甚至可以使用此模块从命令行读取输入数据。能够逐行读取文件,使我们有机会读取大文件,而无需将它们完全加载到内存中。它还允许我们只查找相关信息,一旦找到相关信息就停止搜索。

因为Readline是内置模块,所以不需要安装可以直接引入。

const readline = require('readline');

由于 readline 模块适用于可读的流,我们必须首先使用 fs 模块创建一个流,如下所示:

const rl = readline.createInterface({     input: fs.createReadStream('file.txt'),     output: process.stdout,     terminal: false });

现在我们可以侦听 rl 对象上的 line 事件,当从流中读取新行时,该事件将被触发:

rl.on('line', (line) => {     console.log(line); });

下面是完整代码的例子:
Nodejs如何实现大文件逐行读取
这样就实现了node逐行读取大文件的功能。

2. 使用第三方库实现逐行读取

2.1 Line-reader

Line-reader 是一个开源模块,用于在 Node.js 中逐行读取文件。可以通过在终端中运行以下命令将其添加到项目中:

npm i line-reader --save

Line-reader提供了读取给定文件的每一行的 eachLine ()方法。它接受一个带有两个参数的回调函数: 行内容和一个布尔值,该值指定行 read 是否是文件的最后一行。下面是一个例子:
“`
const lineReader = require(‘line-reader’);

lineReader.eachLine(‘file.txt’, (line, last) => {
console.log(line);
});

每一种技术方案都有一定的适用场景。比如用木头可以建造3层高的楼房,但是100层的摩天大厦木头就难以胜任了。因此面对不同的情况,需要切换不同的技术方案。今天咱们一起聊聊Node文件读取的问题。
Nodejs如何实现大文件逐行读取
我们知道Node的 fs 模块提供了打开文件的方法 readFilereadFileSync,但是在打开文件的时候需要将整个文件都读取到内存中。对于小文件来说这样操作并没有什么问题,如果需要打开几个G大小的文件就可能会出现错误。
Nodejs如何实现大文件逐行读取

如果我们需要读取一个大文件,或者需要在大文件中查找内容,有什么好办法呢?

1. Readline原生实现逐行读取

Readline 是Node.js 的内置模块,专门为此目的开发的ーー每次从任何可读的流中读取一行。您甚至可以使用此模块从命令行读取输入数据。能够逐行读取文件,使我们有机会读取大文件,而无需将它们完全加载到内存中。它还允许我们只查找相关信息,一旦找到相关信息就停止搜索。

因为Readline是内置模块,所以不需要安装可以直接引入。

const readline = require('readline');

由于 readline 模块适用于可读的流,我们必须首先使用 fs 模块创建一个流,如下所示:

const rl = readline.createInterface({     input: fs.createReadStream('file.txt'),     output: process.stdout,     terminal: false });

现在我们可以侦听 rl 对象上的 line 事件,当从流中读取新行时,该事件将被触发:

rl.on('line', (line) => {     console.log(line); });

下面是完整代码的例子:
Nodejs如何实现大文件逐行读取
这样就实现了node逐行读取大文件的功能。

2. 使用第三方库实现逐行读取

2.1 Line-reader

Line-reader 是一个开源模块,用于在 Node.js 中逐行读取文件。可以通过在终端中运行以下命令将其添加到项目中:

npm i line-reader --save

Line-reader提供了读取给定文件的每一行的 eachLine ()方法。它接受一个带有两个参数的回调函数: 行内容和一个布尔值,该值指定行 read 是否是文件的最后一行。下面是一个例子:
“`
const lineReader = require(‘line-reader’);

lineReader.eachLine(‘file.txt’, (line, last) => {
console.log(line);
});

每一种技术方案都有一定的适用场景。比如用木头可以建造3层高的楼房,但是100层的摩天大厦木头就难以胜任了。因此面对不同的情况,需要切换不同的技术方案。今天咱们一起聊聊Node文件读取的问题。
Nodejs如何实现大文件逐行读取
我们知道Node的 fs 模块提供了打开文件的方法 readFilereadFileSync,但是在打开文件的时候需要将整个文件都读取到内存中。对于小文件来说这样操作并没有什么问题,如果需要打开几个G大小的文件就可能会出现错误。
Nodejs如何实现大文件逐行读取

如果我们需要读取一个大文件,或者需要在大文件中查找内容,有什么好办法呢?

1. Readline原生实现逐行读取

Readline 是Node.js 的内置模块,专门为此目的开发的ーー每次从任何可读的流中读取一行。您甚至可以使用此模块从命令行读取输入数据。能够逐行读取文件,使我们有机会读取大文件,而无需将它们完全加载到内存中。它还允许我们只查找相关信息,一旦找到相关信息就停止搜索。

因为Readline是内置模块,所以不需要安装可以直接引入。

const readline = require('readline');

由于 readline 模块适用于可读的流,我们必须首先使用 fs 模块创建一个流,如下所示:

const rl = readline.createInterface({     input: fs.createReadStream('file.txt'),     output: process.stdout,     terminal: false });

现在我们可以侦听 rl 对象上的 line 事件,当从流中读取新行时,该事件将被触发:

rl.on('line', (line) => {     console.log(line); });

下面是完整代码的例子:
Nodejs如何实现大文件逐行读取
这样就实现了node逐行读取大文件的功能。

2. 使用第三方库实现逐行读取

2.1 Line-reader

Line-reader 是一个开源模块,用于在 Node.js 中逐行读取文件。可以通过在终端中运行以下命令将其添加到项目中:

npm i line-reader --save

Line-reader提供了读取给定文件的每一行的 eachLine ()方法。它接受一个带有两个参数的回调函数: 行内容和一个布尔值,该值指定行 read 是否是文件的最后一行。下面是一个例子:
“`
const lineReader = require(‘line-reader’);

lineReader.eachLine(‘file.txt’, (line, last) => {
console.log(line);
});

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Nodejs如何实现大文件逐行读取求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们