在 Node.js 中读取文件
在这篇简短的文章中,我们将学习如何在 Node.js 中读取文件。
在 Node.js 中读取文件
fs
模块提供了许多有用的函数来访问文件系统并与之交互。 fs
模块的一个特殊功能是默认情况下所有方法都是异步的,但也可以通过添加同步来同步工作。
我们将使用 fs.readFile()
来读取 Node.js 中的文件。 您需要传递文件路径、编码和回调函数来调用文件数据或错误。
fs.readFile()
方法是用于读取文件的内置方法。 它将整个文件读入缓冲区。 require()
方法用于加载模块,如 const fs = require('fs')
。
语法:
fs.readFile( filename, encoding, callbackFn )
此方法接受三个参数。
callbackFn 参数 | 说明 |
---|---|
err | 如果读取文件时发生任何错误。 |
data | 正在读取的文件的内容。 |
它返回文件中存储的内容、数据或读取文件时遇到错误。 让我们通过一个例子来理解它。
代码:
const fs = require('fs');
fs.readFile('/helloworld.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
输出结果如下:
Hello jiyik.com readers!
另一种选择是使用同步版本 fs.readFileSync()
。
代码:
const fs = require('fs');
try {
const fileContent = fs.readFileSync('/helloworld.txt', 'utf8');
console.log(fileContent);
} catch (err) {
console.error(err);
}
输出结果如下:
Hello jiyik.com readers!
我们还可以使用 fs/promises 模块提供的 fsPromises.readFile()
方法。
代码:
const fsPromises = require('fs/promises');
async function FileReadFn() {
try {
const fileContent = await fsPromises.readFile('/helloworld.txt', { encoding: 'utf8' });
console.log(fileContent);
} catch (err) {
console.log(err);
}
}
FileReadFn();
输出结果如下:
Hello jiyik.com readers!
fs.readFile()
、fsPromises.readFile()
和 fs.readFileSync()
这三个方法都在返回数据之前将文件的全部内容读入内存。 这意味着大文件将极大地影响内存使用和程序执行速度。
我们没有等待文件完成读取,而是在准备好要发送的数据后立即开始流式传输到 HTTP 客户端。 与使用其他数据处理方法相比,Streams 本质上提供了两个主要优势。
- 内存效率——您不必在处理之前将大量数据加载到内存中。
- 时间效率 - 开始处理数据所需的时间要少得多,因为您可以立即开始处理,而不是等到整个有效负载可用。
在文件流上,调用 pipe()
方法,它获取源并将其定向到目标。 目标流是 pipe()
方法的返回值,这是一件非常方便的事情,它允许我们将对 pipe()
的多个调用链接在一起。
代码:
const fs = require('fs');
const http = require('http');
const nodeServer = http.createServer((req, res) => {
const fileStream = fs.createReadStream(`${__dirname}/helloworld.txt`);
fileStream.pipe(res);
});
nodeServer.listen(3000);
输出结果如下:
Hello jiyik.com readers!
相关文章
Node.js 中的 HTTP 发送 POST 请求
发布时间:2023/03/27 浏览次数:200 分类:Node.js
-
在本文中,我们将学习如何使用 Node.js 使用第三方包发出发送 post 请求。
Node.js 与 React JS 的比较
发布时间:2023/03/27 浏览次数:137 分类:Node.js
-
本文比较和对比了两种编程语言,Node.js 和 React。React 和 Node.js 都是开源 JavaScript 库的示例。 这些库用于构建用户界面和服务器端应用程序。