当前位置:   article > 正文

Node.js 文件系统( fs 模块 )

Node.js 文件系统( fs 模块 )

Node.js 的文件系统模块(fs 模块)提供了一组用于与文件系统交互的 API。这些 API 包括文件读写、文件和目录创建、删除、重命名等操作。fs 模块支持同步和异步两种方式来执行文件系统操作。

基本使用

首先,你需要导入 fs 模块:

const fs = require('fs');
  • 1

同步方法

同步方法会阻塞 Node.js 的事件循环,直到操作完成。这些方法以 _sync 结尾。

1. fs.readFileSync

读取文件内容。

try {
  const data = fs.readFileSync('./example.txt', 'utf8');
  console.log(data);
} catch (err) {
  console.error('Error reading file:', err);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2. fs.writeFileSync

写入文件内容。

try {
  fs.writeFileSync('./example.txt', 'Hello, World!', 'utf8');
  console.log('File written successfully.');
} catch (err) {
  console.error('Error writing file:', err);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

异步方法

异步方法不会阻塞事件循环,而是通过回调函数或返回一个 Promise 来处理结果。

1. fs.readFile

异步读取文件内容。

fs.readFile('./example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error('Error reading file:', err);
    return;
  }
  console.log(data);
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
2. fs.writeFile

异步写入文件内容。

fs.writeFile('./example.txt', 'Hello, World!', 'utf8', (err) => {
  if (err) {
    console.error('Error writing file:', err);
    return;
  }
  console.log('File written successfully.');
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

其他常用方法

1. fs.readdir

异步读取目录中的文件列表。

fs.readdir('./', (err, files) => {
  if (err) {
    console.error('Error reading directory:', err);
    return;
  }
  console.log(files);
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
2. fs.mkdir

异步创建目录。

fs.mkdir('./newDir', { recursive: true }, (err) => {
  if (err) {
    console.error('Error creating directory:', err);
    return;
  }
  console.log('Directory created successfully.');
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
3. fs.rmdir

异步删除空目录。

fs.rmdir('./newDir', (err) => {
  if (err) {
    console.error('Error removing directory:', err);
    return;
  }
  console.log('Directory removed successfully.');
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
4. fs.unlink

异步删除文件。

fs.unlink('./example.txt', (err) => {
  if (err) {
    console.error('Error removing file:', err);
    return;
  }
  console.log('File removed successfully.');
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
5. fs.rename

异步重命名文件或目录。

fs.rename('./oldName.txt', './newName.txt', (err) => {
  if (err) {
    console.error('Error renaming file:', err);
    return;
  }
  console.log('File renamed successfully.');
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
6. fs.stat

异步获取文件的状态信息。

fs.stat('./example.txt', (err, stats) => {
  if (err) {
    console.error('Error getting file status:', err);
    return;
  }
  console.log(stats.isFile(), stats.isDirectory());
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用 Promises

从 Node.js v10 开始,fs 模块的方法也可以返回 Promise。这对于使用 async/await 编写异步代码非常有用。

const fsPromises = fs.promises;

async function readFileAsync() {
  try {
    const data = await fsPromises.readFile('./example.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error('Error reading file:', err);
  }
}

readFileAsync();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

示例:使用 fs 模块读写文件

下面是一个简单的示例,展示了如何使用 fs 模块读取和写入文件。

const fs = require('fs');

// 写入文件
fs.writeFile('./example.txt', 'Hello, World!', 'utf8', (err) => {
  if (err) {
    console.error('Error writing file:', err);
    return;
  }
  console.log('File written successfully.');

  // 读取文件
  fs.readFile('./example.txt', 'utf8', (err, data) => {
    if (err) {
      console.error('Error reading file:', err);
      return;
    }
    console.log('File content:', data);
  });
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

总结

fs 模块是 Node.js 中非常强大的工具,它提供了丰富的 API 来处理文件系统操作。通过使用同步和异步方法,你可以根据应用程序的需求选择最合适的方式来处理文件和目录。使用异步方法和 Promise 可以帮助你避免阻塞事件循环,并编写出更加高效和可维护的代码。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/899767
推荐阅读
相关标签
  

闽ICP备14008679号