Node.js 文件系统 (fs) 使用教程
Node.js 的 fs (File System) 模块是用于处理文件和目录的内置模块。它提供了一组方法,用于执行文件的读取、写入、删除等操作。在本教程中,我们将深入介绍如何使用 Node.js 的 fs 模块来进行文件系统操作。
安装
Node.js 自带了 fs 模块,因此不需要额外安装。只需在你的脚本中使用 require 命令引入 fs 模块即可:
const fs = require('fs');
基本文件操作
读取文件 - fs.readFile(path[, options], callback)
配置项:
- path:要读取的文件的路径。
- options(可选):一个可选的对象,用于指定读取文件的选项,如编码格式等。常用的选项有:
- encoding:指定文件的编码格式,默认为 null,表示返回原始的 Buffer 对象。常用的编码格式包括 'utf8'、'ascii'、'base64' 等。
- flag:用于指定文件的打开标志,默认为 'r',表示以只读模式打开。
- callback:处理文件读取结果的回调函数,接受两个参数 err 和 data,其中 err 表示读取过程中的错误信息,data 表示读取到的文件内容。
要读取文件内容,可以使用 fs.readFile() 方法
。以下是读取文件的示例:
fs.readFile('path/to/file', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
} else {
console.log('File content:', data);
}
});
写入文件 - fs.writeFile(file, data[, options], callback)
配置项:
- file:要写入的文件的路径。
- data:要写入的内容。可以是字符串或者 Buffer 对象。
- options(可选):一个可选的对象,用于指定写入文件的选项,如编码格式、文件打开标志等。常用的选项有:
- encoding:指定文件的编码格式,默认为 'utf8'。
- mode:设置文件的权限,默认为 0o666。
- flag:用于指定文件的打开标志,默认为 'w',表示以覆盖写入模式打开。
- callback:写入文件完成后的回调函数,接受一个参数 err,表示写入过程中的错误信息。
要写入文件,可以使用 fs.writeFile()
方法。以下是写入文件的示例:
const content = 'Hello, World!';
fs.writeFile('path/to/file', content, 'utf8', (err) => {
if (err) {
console.error('Error writing file:', err);
} else {
console.log('File written successfully!');
}
});
追加文件内容 - fs.appendFile(file, data[, options], callback)
配置项:
- file:要追加内容的文件的路径。
- data:要追加的内容。可以是字符串或者 Buffer 对象。
- options(可选):一个可选的对象,用于指定追加文件的选项,如编码格式、文件打开标志等。常用的选项有:
- encoding:指定文件的编码格式,默认为 'utf8'。
- mode:设置文件的权限,默认为 0o666。
- flag:用于指定文件的打开标志,默认为 'a',表示以追加模式打开。
- callback:追加文件完成后的回调函数,接受一个参数 err,表示追加过程中的错误信息。
如果你想要追加内容到已有文件中,可以使用 fs.appendFile()
方法。以下是追加文件内容的示例:
const additionalContent = 'This is additional content.';
fs.appendFile('path/to/file', additionalContent, 'utf8', (err) => {
if (err) {
console.error('Error appending file:', err);
} else {
console.log('Content appended successfully!');
}
});
删除文件 - fs.unlink(path, callback)
配置项:
- path:要删除的文件的路径。
- callback:删除文件完成后的回调函数,接受一个参数 err,表示删除过程中的错误信息。
要删除文件,可以使用 fs.unlink() 方法。以下是删除文件的示例:
fs.unlink('path/to/file', (err) => {
if (err) {
console.error('Error deleting file:', err);
} else {
console.log('File deleted successfully!');
}
});
进阶文件操作
检查文件是否存在 - fs.access(path[, mode], callback)
配置项:
- path:要检查的文件的路径。
- mode(可选):一个可选的常量,用于指定文件的测试模式,默认为 fs.constants.F_OK,表示检查文件是否存在。其他可选的模式包括 fs.constants.R_OK(检查文件是否可读)、fs.constants.W_OK(检查文件是否可写)和 fs.constants.X_OK(检查文件是否可执行)。
- callback:检查文件完成后的回调函数,接受一个参数 err,表示检查过程中的错误信息。
要检查文件是否存在,可以使用 fs.exists() 方法。这个方法已被弃用,推荐使用 fs.access() 方法来替代。以下是检查文件是否存在的示例:
const filePath = 'path/to/file';
fs.access(filePath, fs.constants.F_OK, (err) => {
if (err) {
console.error('File does not exist:', err);
} else {
console.log('File exists!');
}
});
重命名文件 - fs.rename(oldPath, newPath, callback)
配置项:
- oldPath:原文件路径。
- newPath:新文件路径。
- callback:重命名文件完成后的回调函数,接受一个参数 err,表示重命名过程中的错误信息。
要重命名文件,可以使用 fs.rename() 方法。以下是重命名文件的示例:
const oldFilePath = 'path/to/oldFile';
const newFilePath = 'path/to/newFile';
fs.rename(oldFilePath, newFilePath, (err) => {
if (err) {
console.error('Error renaming file:', err);
} else {
console.log('File renamed successfully!');
}
});
读取目录内容 - fs.readdir(path[, options], callback)
配置项:
- path:要读取目录内容的路径。
- options(可选):一个可选的对象,用于指定读取目录的选项,如编码格式等。常用的选项有:
- encoding:指定目录的编码格式,默认为 'utf8'。
- callback:读取目录内容完成后的回调函数,接受两个参数 err 和 files,其中 err 表示读取过程中的错误信息,files 是一个包含目录内容的数组。
要读取目录的内容,可以使用 fs.readdir() 方法。以下是读取目录内容的示例:
const directoryPath = 'path/to/directory';
fs.readdir(directoryPath, (err, files) => {
if (err) {
console.error('Error reading directory:', err);
} else {
console.log('Directory contents:', files);
}
});
创建目录 - fs.mkdir(path[, options], callback)
配置项:
- path:要创建的目录的路径。
- options(可选):一个可选的对象,用于指定创建目录的选项,如目录权限等。
- recursive:一个布尔值,指定是否递归创建目录,默认为 false。如果设为 true,则会递归创建目录及其上级目录。
- mode:设置目录的权限,默认为 0o777。
- callback:创建目录完成后的回调函数,接受一个参数 err,表示创建过程中的错误信息。
要创建目录,可以使用 fs.mkdir() 方法。以下是创建目录的示例:
const directoryPath = 'path/to/newDirectory';
fs.mkdir(directoryPath, { recursive: true }, (err) => {
if (err) {
console.error('Error creating directory:', err);
} else {
console.log('Directory created successfully!');
}
});
总结
在本教程中,我们详细介绍了如何使用 Node.js 的 fs 模块执行文件系统操作。你学会了读取文件、写入文件、追加文件内容、删除文件以及其他常见操作,例如重命名文件、检查文件是否存在、读取目录内容和创建目录。
此外,fs 模块还提供了其他一些方法和选项,以支持更多的文件系统操作。你可以在 Node.js 的官方文档中查找详细的文档和示例,以深入了解 fs 模块的更多功能和用法。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。