Skip to content

fs 文件系统模块

fs 文件系统模块

Node.js 提供了 fs(文件系统)模块,用于与文件系统进行交互。它提供了多种用于读取、写入、删除、修改文件和目录的 API。通过 fs 模块,开发者可以进行文件的各种操作。

要使用 fs 模块,可以通过以下方式引入:

javascript
const fs = require('fs');

文件的读取与写入

检查文件是否存在

在 Node.js 中,可以使用 fs.existsSync() 来同步检查文件是否存在。如果文件存在,则返回 true,否则返回 false

  • 同步检查文件是否存在:

    javascript
    const fs = require('fs');
    
    if (fs.existsSync('example.txt')) {
      console.log('文件存在');
    } else {
      console.log('文件不存在');
    }

    如果需要异步检查文件是否存在,可以使用 fs.access() 方法。

  • 异步检查文件是否存在:

    javascript
    fs.access('example.txt', fs.constants.F_OK, (err) => {
      if (err) {
        console.log('文件不存在');
      } else {
        console.log('文件存在');
      }
    });

文件的读取

文件读取可以使用 fs.readFile()(异步)或 fs.readFileSync()(同步)方法。

  • 异步读取文件:

    javascript
    const fs = require('fs');
    
    fs.readFile('example.txt', 'utf8', (err, data) => {
      if (err) {
        console.error('读取文件失败:', err);
        return;
      }
      console.log('文件内容:', data);
    });
  • 同步读取文件:

    javascript
    const fs = require('fs');
    
    try {
      const data = fs.readFileSync('example.txt', 'utf8');
      console.log('文件内容:', data);
    } catch (err) {
      console.error('读取文件失败:', err);
    }

文件的写入

文件写入同样有异步和同步两种方式。fs.writeFile()fs.writeFileSync() 可以用于将数据写入文件。

  • 异步写入文件:

    javascript
    const fs = require('fs');
    
    const data = 'Hello, Node.js!';
    fs.writeFile('output.txt', data, 'utf8', (err) => {
      if (err) {
        console.error('写入文件失败:', err);
        return;
      }
      console.log('文件写入成功');
    });
  • 同步写入文件:

    javascript
    const fs = require('fs');
    
    const data = 'Hello, Node.js!';
    try {
      fs.writeFileSync('output.txt', data, 'utf8');
      console.log('文件写入成功');
    } catch (err) {
      console.error('写入文件失败:', err);
    }

文件操作时的异常处理

在文件操作过程中,常常需要处理文件读取或写入中的异常。Node.js 的 fs 模块通过回调函数传递错误对象来进行错误处理。

  • 异步操作错误处理:

    javascript
    const fs = require('fs');
    
    fs.readFile('example.txt', 'utf8', (err, data) => {
      if (err) {
        console.error('文件读取失败:', err.message);
        return;
      }
      console.log('文件内容:', data);
    });
  • 同步操作错误处理:

    javascript
    const fs = require('fs');
    
    try {
      const data = fs.readFileSync('example.txt', 'utf8');
      console.log('文件内容:', data);
    } catch (err) {
      console.error('文件读取失败:', err.message);
    }

文件操作

截断文件

fs.truncate() 用于截断文件,将文件内容缩短到指定的长度。如果文件原本较长,截断后多余的内容会被删除;如果文件较短,文件长度会填充为指定长度。

  • 截断文件:

    javascript
    const fs = require('fs');
    
    fs.truncate('output.txt', 5, (err) => {
      if (err) {
        console.error('文件截断失败:', err);
        return;
      }
      console.log('文件截断成功');
    });

删除文件

使用 fs.unlink() 可以删除指定的文件。请注意,这会永久删除文件,因此请小心使用。

  • 删除文件:

    javascript
    const fs = require('fs');
    
    fs.unlink('output.txt', (err) => {
      if (err) {
        console.error('删除文件失败:', err);
        return;
      }
      console.log('文件删除成功');
    });

复制文件

Node.js 本身没有内置的复制文件方法,但你可以使用 fs.copyFile() 方法来实现文件复制操作。

  • 复制文件:

    javascript
    const fs = require('fs');
    
    fs.copyFile('source.txt', 'destination.txt', (err) => {
      if (err) {
        console.error('复制文件失败:', err);
        return;
      }
      console.log('文件复制成功');
    });

重命名文件

fs.rename() 用于重命名文件或将文件从一个位置移动到另一个位置。

  • 重命名文件:

    javascript
    const fs = require('fs');
    
    fs.rename('oldname.txt', 'newname.txt', (err) => {
      if (err) {
        console.error('重命名文件失败:', err);
        return;
      }
      console.log('文件重命名成功');
    });

目录操作

创建目录

使用 fs.mkdir() 可以创建一个目录。可以通过设置 recursive 参数为 true 来递归创建目录。

  • 创建目录:

    javascript
    const fs = require('fs');
    
    fs.mkdir('newdir', { recursive: true }, (err) => {
      if (err) {
        console.error('创建目录失败:', err);
        return;
      }
      console.log('目录创建成功');
    });

读取目录

fs.readdir() 用于读取指定目录的内容,并返回一个包含目录中所有文件和文件夹名称的数组。

  • 读取目录:

    javascript
    const fs = require('fs');
    
    fs.readdir('someDir', (err, files) => {
      if (err) {
        console.error('读取目录失败:', err);
        return;
      }
      console.log('目录内容:', files);
    });

删除目录

使用 fs.rmdir() 可以删除空目录。如果目录不为空,删除操作会失败。你也可以使用 fs.rm() 来删除非空目录。

  • 删除目录:

    javascript
    const fs = require('fs');
    
    fs.rmdir('someDir', (err) => {
      if (err) {
        console.error('删除目录失败:', err);
        return;
      }
      console.log('目录删除成功');
    });

查看目录信息

fs.stat() 可以用来获取文件或目录的详细信息,包括文件大小、创建时间、修改时间等。

  • 查看目录信息:

    javascript
    const fs = require('fs');
    
    fs.stat('someDir', (err, stats) => {
      if (err) {
        console.error('获取目录信息失败:', err);
        return;
      }
      console.log('目录信息:', stats);
    });

获取目录的路径

Node.js 本身没有直接获取目录路径的函数,但可以通过 __dirname 来获取当前脚本文件所在的目录路径。

  • 获取目录的路径:

    javascript
    console.log(__dirname);  // 输出当前脚本所在的目录路径
编程洪同学服务平台是一个广泛收集编程相关内容和资源,旨在满足编程爱好者和专业开发人员的需求的网站。无论您是初学者还是经验丰富的开发者,都可以在这里找到有用的信息和资料,我们将助您提升编程技能和知识。
专业开发
高端定制
售后无忧
站内资源均为本站制作或收集于互联网等平台,如有侵权,请第一时间联系本站,敬请谅解!本站资源仅限于学习与参考,严禁用于各种非法活动,否则后果自行负责,本站概不承担!