nodejs读取文件每行
时间: 2024-08-07 10:01:33 浏览: 98
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用于构建高效、非阻塞式的网络应用。为了从文件中逐行读取内容并处理每一行数据,你可以利用 Node.js 的 `fs` 模块提供的 `readFileSync` 或者 `createReadStream` 等方法。
### 使用 fs.readFileSync (同步)
对于较小的文件,可以使用 `fs.readFileSync` 来一次性将整个文件的内容读入内存。然后,你可以通过字符串操作逐行分割内容:
```javascript
const fs = require('fs');
const filePath = 'example.txt';
fs.readFileSync(filePath, 'utf8').split('\n').forEach((line) => {
console.log(line);
});
```
**注意事项**:
- `fs.readFileSync` 是同步操作,这意味着它会阻塞事件循环直到文件读取完成。
- 对于大文件来说,这种方法可能导致性能瓶颈或内存不足的问题。
### 使用 fs.createReadStream (异步)
对于较大的文件,更推荐使用 `fs.createReadStream`,这是一个流式读取过程,允许你逐块读取文件,并在处理完一行后立即释放内存:
```javascript
const fs = require('fs');
const filePath = 'example.txt';
const readStream = fs.createReadStream(filePath);
readStream.on('data', function(chunk) {
const lines = chunk.toString().split('\n');
for (let line of lines) {
if (line.trim() !== '') { // 只打印非空行
console.log(line);
}
}
});
```
在这个例子中,一旦有新的数据准备好供读取,`data` 事件就会触发,此时我们可以处理每一行数据。这种方式非常适合处理大数据文件或需要实时读取的情况。
###
阅读全文