Node.js文件系统(fs)

栏目: NodeJs 发布时间:2024-12-05

Node.js 的 fs(File System)模块提供了与文件系统交互的 API,允许你在 Node.js 应用程序中读取、写入、监视文件以及操作目录。这些功能对于创建需要处理文件数据的服务器端应用程序至关重要。本文将介绍 fs 模块的一些基本和高级用法。

1. 引入 fs 模块

首先,你需要在你的 Node.js 文件中引入 fs 模块:

const fs = require('fs');

2. 异步与同步方法

fs 模块提供了两种风格的方法:异步(asynchronous)和同步(synchronous)。异步方法通常带有 callback 参数,用于在操作完成后执行。同步方法则直接返回结果,但会阻塞代码执行,直到操作完成。

  • 异步方法:例如 fs.readFile()fs.writeFile()
  • 同步方法:例如 fs.readFileSync()fs.writeFileSync()

通常建议使用异步方法,以避免阻塞事件循环,从而影响应用程序的性能。

3. 读取文件

  • 异步读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});
  • 同步读取文件
try {
  const data = fs.readFileSync('example.txt', 'utf8');
  console.log(data);
} catch (err) {
  console.error(err);
}

4. 写入文件

  • 异步写入文件
fs.writeFile('example.txt', 'Hello, World!', 'utf8', (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('File written successfully');
});
  • 同步写入文件
try {
  fs.writeFileSync('example.txt', 'Hello, World!', 'utf8');
  console.log('File written successfully');
} catch (err) {
  console.error(err);
}

5. 追加文件

  • 异步追加文件
fs.appendFile('example.txt', '\nAppending some text.', 'utf8', (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('Text appended successfully');
});
  • 同步追加文件
try {
  fs.appendFileSync('example.txt', '\nAppending some text.', 'utf8');
  console.log('Text appended successfully');
} catch (err) {
  console.error(err);
}

6. 监视文件

fs.watch() 方法允许你监视文件或目录的变化,并在变化发生时执行回调函数。

fs.watch('example.txt', (eventType, filename) => {
  if (filename) {
    console.log(`File ${filename} changed with event type: ${eventType}`);
  }
});

7. 操作目录

  • 读取目录内容
fs.readdir('directory_name', (err, files) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(files);
});
  • 创建目录
fs.mkdir('new_directory', { recursive: true }, (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('Directory created successfully');
});
  • 删除目录
fs.rmdir('directory_name', { recursive: true }, (err) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('Directory removed successfully');
});

8. 路径操作

虽然 fs 模块本身不直接提供路径操作功能,但 Node.js 的 path 模块可以与 fs 模块一起使用来处理文件路径。

const path = require('path');

const fullPath = path.join(__dirname, 'new_directory', 'example.txt');
console.log(fullPath);

总结

Node.js 的 fs 模块提供了一套丰富的 API,用于与文件系统交互。通过本文,你学习了如何读取、写入、监视文件以及操作目录的基本方法。这些技能对于开发需要处理文件数据的 Node.js 应用程序至关重要。记住,在可能的情况下使用异步方法,以避免阻塞事件循环,从而影响应用程序的性能。

本文地址:https://www.tides.cn/p_node-fs