Node.js 中 fs 模块的异步和同步操作指南
2024-02-22 05:01:36
一、Node.js 中的 fs 模块
Node.js 中的 fs 模块提供了一个简单的 API,用于与文件系统进行交互,包括读取、写入和更新文件。该模块提供了多种方法来处理文件系统操作,其中包括异步和同步方法。
1. 异步读取
异步读取文件的方法是 fs.readFile()。该方法接受两个参数:要读取的文件路径和一个回调函数。回调函数将在文件读取完成后被调用,它将收到两个参数:一个错误对象(如果有的话)和文件内容。
例如,以下代码将异步读取文件 "file.txt":
fs.readFile('file.txt', (err, data) => {
if (err) {
console.error(err);
} else {
console.log(data.toString());
}
});
2. 同步读取
同步读取文件的方法是 fs.readFileSync()。该方法与 fs.readFile() 类似,但它不会接受回调函数。相反,它将立即读取文件的内容并返回一个字符串。
例如,以下代码将同步读取文件 "file.txt":
const data = fs.readFileSync('file.txt');
console.log(data.toString());
二、Node.js 中的 HTTP 模块
Node.js 中的 HTTP 模块提供了一个简单的 API,用于创建 HTTP 服务器。HTTP 模块提供了多种方法来处理 HTTP 请求,包括创建服务器、路由请求和发送响应。
1. 创建服务器
创建 HTTP 服务器的方法是 http.createServer()。该方法接受一个回调函数作为参数。回调函数将在服务器收到请求时被调用,它将收到两个参数:一个请求对象和一个响应对象。
例如,以下代码将创建一个简单的 HTTP 服务器:
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
});
server.listen(3000);
这个服务器将在端口 3000 上侦听请求。当收到请求时,它将发送一个简单的 "Hello World!" 响应。
三、结合 fs 模块和 HTTP 模块
fs 模块和 HTTP 模块可以结合使用来创建强大的 web 应用程序。例如,以下代码将创建一个简单的文件服务器:
const http = require('http');
const fs = require('fs');
const server = http.createServer((req, res) => {
const url = req.url;
if (url === '/') {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<h1>Welcome to the File Server!</h1>');
} else {
fs.readFile(`.${url}`, (err, data) => {
if (err) {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('404 Not Found');
} else {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(data);
}
});
}
});
server.listen(3000);
这个服务器将在端口 3000 上侦听请求。当收到请求时,它将检查请求的 URL。如果 URL 是根目录('/'),它将发送一个简单的 "Welcome to the File Server!" 响应。如果 URL 是其他路径,它将尝试读取该路径的文件并将其发送给客户端。
四、总结
fs 模块和 HTTP 模块是 Node.js 中两个非常重要的模块。fs 模块可以用于与文件系统进行交互,而 HTTP 模块可以用于创建 HTTP 服务器。这两个模块可以结合使用来创建强大的 web 应用程序。