在这一章中,我们将探讨如何使用 Node.js 来进行目录操作。目录操作包括创建目录、读取目录内容、删除目录以及修改目录属性等。这些功能对于文件管理非常有用,特别是在处理大量文件时。
文件系统模块概述
Node.js 提供了一个名为 fs
的核心模块,用于与文件系统进行交互。除了文件操作外,该模块也提供了目录操作的 API。首先,我们需要导入这个模块:
const fs = require('fs');
创建目录
使用 fs.mkdir()
方法可以创建新的目录。如果需要递归创建目录(即父目录不存在时自动创建),可以使用 fs.mkdirSync()
或者异步版本的 fs.promises.mkdir()
方法。
异步创建目录
fs.mkdir('newFolder', (err) => { if (err) throw err; console.log('Directory created successfully!'); });
同步创建目录
try { fs.mkdirSync('newFolder'); console.log('Directory created successfully!'); } catch (err) { console.error(err); }
递归创建目录
为了递归地创建目录,可以使用 fs.mkdir()
方法的 recursive
选项或使用 fs.promises.mkdir()
方法:
-- -------------------- ---- ------- -- -- ------- -- ----------------------------- - ---------- ---- -- ----- -- - -- ----- ----- ---- ---------------------- ------- ---------------- --- -- -- -------- ----- -------- -------------------- - --- - ----- -------------------------------------- - ---------- ---- --- ---------------------- ------- ---------------- - ----- ----- - ------------------- - - ---------------------
读取目录内容
要读取一个目录中的所有文件和子目录,可以使用 fs.readdir()
方法。此方法会返回一个包含目录下所有文件和子目录名的数组。
异步读取目录
fs.readdir('targetFolder', (err, files) => { if (err) throw err; for (const file of files) { console.log(file); } });
同步读取目录
try { const files = fs.readdirSync('targetFolder'); for (const file of files) { console.log(file); } } catch (err) { console.error(err); }
删除目录
要删除一个空目录,可以使用 fs.rmdir()
方法。若要删除非空目录,需要先递归删除其下的所有内容。
删除空目录
fs.rmdir('emptyFolder', (err) => { if (err) throw err; console.log('Directory removed successfully!'); });
删除非空目录
对于非空目录,我们通常需要先列出并删除目录内的所有内容,然后再删除目录本身。这里提供一个简单的示例函数来实现这一点:
-- -------------------- ---- ------- ----- -------- --------------------- - ----- ----- - ----- -------------------------- --- ------ ---- -- ------ - ----- ------- - ---- - --- - ----- ----- ----- - ----- -------------------------- -- --------------------- - -- ----------- ------ -------------- ----- ------------------------- - ---- - -- ------ ----- ----- ---------------------------- - - -- ------ --- --------- ------ ----- ------------------------ - --------------------------------- -------- -- ---------------------- ------- ---------------- ------------ -- --------------------
修改目录属性
Node.js 的 fs
模块提供了多种方法来修改文件系统的属性,包括目录。例如,我们可以改变目录的权限:
更改目录权限
fs.chmod('directoryPath', '0777', (err) => { if (err) throw err; console.log('Permissions changed successfully!'); });
更改目录的所有者和组
Node.js 的 fs
模块并不直接支持更改文件或目录的所有者和组。这通常需要特定的操作系统命令,如在 Linux 系统上使用 chown
命令。
以上就是关于 Node.js 目录操作的基础介绍。通过这些方法,你可以有效地管理和操作你的文件系统,从而提高开发效率。