编辑
2025-09-28
NodeJs
00

目录

引入 fs 模块
同步读写文件
同步读取文件
同步写入文件
异步读写文件
异步读取文件
异步写入文件
文件追加内容
同步追加内容
异步追加内容
删除文件
同步删除文件
异步删除文件
读取目录内容
同步读取目录内容
异步读取目录内容
总结

在Node.js中,处理文件是一个常见的任务,Node.js提供了一些内置的模块来帮助我们轻松地完成文件读写操作。本文将详细介绍如何在Node.js中进行文件读写,并提供丰富的示例代码。

引入 fs 模块

fs 模块是Node.js的核心模块之一,用于文件系统操作。在开始文件操作之前,我们需要先引入这个模块:

JavaScript
const fs = require('fs');

同步读写文件

同步读取文件

fs.readFileSync 方法用于同步读取文件。它是一个阻塞操作,读取文件的内容并返回其内容。

参数说明:

  • path: 要读取的文件的路径。
  • options (可选): 用于指定编码或标志。默认情况下,它是 null
JavaScript
const fs = require('fs'); try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); }

image.png

同步写入文件

fs.writeFileSync 方法用于同步写入文件。它是一个阻塞操作,将数据写入到指定的文件中。

参数说明:

  • path: 要写入的文件的路径。
  • data: 要写入的数据。
  • options (可选): 用于指定编码、模式和标志。这是一个对象。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'w' }
JavaScript
const fs = require('fs'); const content = 'Hello, Node.js'; try { fs.writeFileSync('example.txt', content); console.log('File written successfully'); } catch (err) { console.error(err); }

image.png

异步读写文件

异步读取文件

fs.readFile 方法用于异步读取文件。它是一个非阻塞操作,读取文件的内容并通过回调函数返回结果。

参数说明:

  • path: 要读取的文件的路径。
  • options (可选): 用于指定编码或标志。默认值是 null
  • callback: 回调函数,包含两个参数 (err, data),其中 err 是一个错误对象,当读取成功时为 nulldata 是读取到的文件内容。
JavaScript
const fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });

image.png

异步写入文件

fs.writeFile 方法用于异步写入文件。它是一个非阻塞操作,将数据写入到指定的文件中并通过回调函数返回结果。

参数说明:

  • path: 要写入的文件的路径。
  • data: 要写入的数据。
  • options (可选): 用于指定编码、模式和标志。这是一个对象。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'w' }
  • callback: 回调函数,如果写入成功,则这个函数没有参数;如果失败,则提供一个错误对象 err
JavaScript
const fs = require('fs'); const content = 'Hello, Node.js'; fs.writeFile('example.txt', content, (err) => { if (err) { console.error(err); return; } console.log('File written successfully'); });

image.png

文件追加内容

有时我们需要将内容追加到文件的末尾,Node.js提供了同步和异步的方法来实现这一点。

同步追加内容

fs.appendFileSync 方法用于同步追加内容到文件。

参数说明:

  • path: 要追加的文件路径。
  • data: 要追加的数据。
  • options (可选): 用于指定编码、模式和标志。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'a' }
JavaScript
const fs = require('fs'); const additionalContent = '\nAppend this text.'; try { fs.appendFileSync('example.txt', additionalContent); console.log('Content appended successfully'); } catch (err) { console.error(err); }

image.png

异步追加内容

fs.appendFile 方法用于异步追加内容到文件。

参数说明:

  • path: 要追加的文件路径。
  • data: 要追加的数据。
  • options (可选): 用于指定编码、模式和标志。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'a' }
  • callback: 回调函数,如果追加成功,则这个函数没有参数;如果失败,则提供一个错误对象 err
JavaScript
const fs = require('fs'); const additionalContent = '\nAppend this text.'; fs.appendFile('example.txt', additionalContent, (err) => { if (err) { console.error(err); return; } console.log('Content appended successfully'); });

删除文件

我们可以使用 fs.unlink 方法异步删除文件,或者 fs.unlinkSync 方法同步删除文件。

同步删除文件

fs.unlinkSync 方法用于同步删除文件。

参数说明:

  • path: 要删除的文件的路径。
JavaScript
const fs = require('fs'); try { fs.unlinkSync('example.txt'); console.log('File deleted successfully'); } catch (err) { console.error(err); }

image.png

异步删除文件

fs.unlink 方法用于异步删除文件。

参数说明:

  • path: 要删除的文件的路径。
  • callback: 回调函数,如果删除成功,则这个函数没有参数;如果失败,则提供一个错误对象 err
JavaScript
const fs = require('fs'); fs.unlink('example.txt', (err) => { if (err) { console.error(err); return; } console.log('File deleted successfully'); });

文件不存在时,出错

image.png

增加文件是否存在

TypeScript
const fs = require('fs'); // 文件路径 const filePath = 'example.txt'; // 检查文件是否存在 fs.access(filePath, fs.constants.F_OK, (err) => { if (err) { console.error(`File doesn't exist.`); } else { // 文件存在,执行删除操作 fs.unlink(filePath, (err) => { if (err) { console.error(err); return; } console.log('File deleted successfully'); }); } });

image.png

读取目录内容

我们可以使用 fs.readdirSync 方法同步读取目录内容,或者 fs.readdir 方法异步读取目录内容。

同步读取目录内容

fs.readdirSync 方法用于同步读取目录的内容。

参数说明:

  • path: 要读取的目录的路径。
  • options (可选): 用于指定编码。默认值为 utf8
JavaScript
const fs = require('fs'); try { const files = fs.readdirSync('./'); console.log(files); } catch (err) { console.error(err); }

image.png

异步读取目录内容

fs.readdir 方法用于异步读取目录的内容。

参数说明:

  • path: 要读取的目录的路径。
  • options (可选): 用于指定编码。默认值为 utf8
  • callback: 回调函数,包含两个参数 (err, files),其中 err 是错误对象,当读取成功时为 nullfiles 是一个包含目录内容的数组。
JavaScript
const fs = require('fs'); fs.readdir('./', (err, files) => { if (err) { console.error(err); return; } console.log(files); });

总结

Node.js 提供了强大的文件读写功能,可以通过同步和异步的方式进行文件操作。我们可以根据实际需求选择合适的方法来读取、写入、追加内容和删除文件。希望本文的详细讲解和示例代码能帮助你更好地理解和掌握Node.js文件读写操作。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!