返回

Node.js 中 fs 模块的异步和同步操作指南

前端

一、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 应用程序。