Node.js fs 文件系统模块
Node.js 教程
收录了这篇文章

一,获取文件信息

每个文件都有一组文件信息,我们可以使用 fs 模块提供的 stat() 方法获取这组信息。
获得文件详细信息后,它将调用你传递的回调函数,有两个参数:错误消息和文件统计信息:

const fs = require('node:fs');

fs.stat('/Users/joe/test.txt', (err, stats) => {
  if (err) {
    console.error(err);
    return;
  }

  stats.isFile(); // true
  stats.isDirectory(); // false
  stats.isSymbolicLink(); // false
  stats.size; // 1024000 //= 1MB
});

 同步方法,Node.js还提供了一个sync方法,该方法会阻塞线程,直到文件数据准备就绪:

const fs = require('node:fs');

try {
  const stats = fs.statSync('/Users/joe/test.txt');

  stats.isFile(); // true
  stats.isDirectory(); // false
  stats.isSymbolicLink(); // false
  stats.size; // 1024000 //= 1MB
} catch (err) {
  console.error(err);
}

Promise API

Node.js 的 fs 模块从版本 10 开始引入了基于 Promise 的 API,这使得使用 async/await 风格编写文件系统操作代码变得更加简洁和易于阅读。

以下是一些常用的 fs.promises 方法示例,配合 async/await 使用:

const fs = require('node:fs/promises');
async function example() {
  try {
    const stats = await fs.stat('/Users/joe/test.txt');
    stats.isFile(); // true
    stats.isDirectory(); // false
    stats.isSymbolicLink(); // false
    stats.size; // 1024000 //= 1MB
  } catch (err) {
    console.log(err);
  }
}
example();

 

二,读取文件

const fs = require('node:fs/promises');

async function readFileAsync(filePath) {
  try {
    const data = await fs.readFile(filePath, 'utf8');
    console.log(data);
  } catch (err) {
    console.error(`读取文件时发生错误: ${err}`);
  }
}

readFileAsync('./example.txt');

 

三,写入文件

const fs = require('node:fs/promises');

async function writeFileAsync(filePath, content) {
  try {
    await fs.writeFile(filePath, content, 'utf8');
    console.log('文件写入成功');
  } catch (err) {
    console.error(`写入文件时发生错误: ${err}`);
  }
}

writeFileAsync('./example.txt', 'Hello, Node.js with Promises!');

 

四,创建目录

const fs = require('node:fs/promises');

async function mkdirAsync(dirPath) {
  try {
    await fs.mkdir(dirPath, { recursive: true }); // recursive 选项允许创建多级目录
    console.log('目录创建成功');
  } catch (err) {
    console.error(`创建目录时发生错误: ${err}`);
  }
}

mkdirAsync('./newDir');

 

五,删除文件

const fs = require('node:fs/promises');

async function unlinkAsync(filePath) {
  try {
    await fs.unlink(filePath);
    console.log('文件删除成功');
  } catch (err) {
    console.error(`删除文件时发生错误: ${err}`);
  }
}

unlinkAsync('./example.txt');

通过上述示例可以看出,使用 fs.promises 结合 async/await 不仅使代码更加清晰,也提高了错误处理的一致性和代码的可维护性。

 

修改时间 2024-11-05

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
SQL 注入的生命力
ES6 Promise 和 async/await 教程
Rollup 教程
什么是 XSS 攻击
WordPress 语言文件
Nginx 通过日志统计访问数据
Land 主题
WordPress 常用接口