【Node.js入门笔记4---fs 目录操作】

Node.js入门笔记4

Node.js---fs 目录操作

一、目录操作

1.fs.mkdir():创建目录。异步,非阻塞。

语法格式:

bash 复制代码
fs.mkdir(path,[options] ,callback)

参数解读:

参数1:必选参数,字符串,表示要创建的目录的路径。

参数2:可选参数,表示以什么编码格式来读取文件。

参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。

创建单个目录

javascript 复制代码
const fs = require('fs');

fs.mkdir('./new-directory', (err) => {
    if (err) throw err;
    console.log('目录创建成功');
  });

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\learning\mkdir.js

如图:

然后电脑找到这个目录:C:\Users\Administrator\new-directory

创建多个目录

javascript 复制代码
const fs = require('fs');

// 创建多个目录
fs.mkdir('./new-directory/new-sub-directory', { recursive: true }, (err) => {
    if (err) throw err;
    console.log('目录创建成功');
});

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\learning\mkdir.js

结果:C:\Users\Administrator\new-directory

创建目前之前需要确认是否存在:

javascript 复制代码
const fs = require('fs');
const path = require('path');

const dir = 'myDir';

if (!fs.existsSync(dir)) {
  fs.mkdir(dir, (err) => {
    if (err) throw err;
    console.log('目录创建成功');
  });
} else {
  console.log('目录已存在');
}
复制代码
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

```bash
node C:\Users\Administrator\Desktop\mkdir.js

2. fs.mkdirSync():用于创建一个新的目录。异步,非阻塞。

语法格式

bash 复制代码
fs.mkdirSync(path[, options])

参数解读:

参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径

参数2:必选参数,表示要写入的内容。

创建单个目录

javascript 复制代码
const fs = require('fs');

try {
    // 创建一个名为 'newDir' 的目录
    fs.mkdirSync('newDir');
    console.log('目录创建成功');
} catch (err) {
    if (err.code === 'EEXIST') {
        console.log('目录已经存在');
    } else {
        console.error('创建目录时出错:', err);
    }
}

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\mkdirSync.js

结果如图:C:\Users\Administrator\newDir

创建多个目录

javascript 复制代码
const fs = require('fs');

try {
    // 递归创建一个嵌套目录 'parent/child/grandchild'
    fs.mkdirSync('parent/child/grandchild', { recursive: true });
    console.log('目录递归创建成功');
} catch (err) {
    console.error('创建目录时出错:', err);
}

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\mkdirSync.js

3.fs.rmdir():删除空目录。异步。

语法格式:

javascript 复制代码
fs.rmdir(path[, options], callback)

参数解读:

参数1:必选参数,需要指定一个文件路径的字符串,表示要删除的路径。

参数2:可选参数,默认为 false。

参数3:必选参数,回调函数。

javascript 复制代码
// 1.导入fs模块
const fs = require('fs');

// 要删除的目录路径
const dirPath = './test';

fs.rmdir(dirPath, (err) => {
    if (err) {
        if (err.code === 'ENOENT') {
            console.log('目录不存在');
        } else if (err.code === 'ENOTEMPTY') {
            console.log('目录不为空,无法删除');
        } else {
            console.error('删除目录时出错:', err);
        }
    } else {
        console.log('目录删除成功');
    }
});

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\learning\rmdir.js

4. fs.rmdirSync():删除空目录。同步。

语法格式:

javascript 复制代码
fs.rmdirSync(path[, options])

参数解读:

参数1:必选参数,文件夹路径

参数2:可选参数,options对象或编码字符串

同步进行的就不能用回调函数观察数据是否成功,所有用try catch来捕获问题

javascript 复制代码
const fs = require('fs');

// 要删除的目录路径
const dirPath = 'emptyDir';

try {
    fs.rmdirSync(dirPath);
    console.log('目录删除成功');
} catch (err) {
    if (err.code === 'ENOENT') {
        console.log('目录不存在');
    } else if (err.code === 'ENOTEMPTY') {
        console.log('目录不为空,无法删除');
    } else {
        console.error('删除目录时出错:', err);
    }
}

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\rmdirSync.js

5. fs.rm()(Node.js 14.4+):递归删除目录及内容。

语法格式:

javascript 复制代码
fs.rm(path, options, callback);

删除单个文件

javascript 复制代码
// 1.导入fs模块
const fs = require('fs');
const filePath = 'example.txt';

// 2.删除文件
// 参数1: 文件路径
// 参数2: 回调函数
fs.rm(filePath, (err) => {
    if (err) {
        console.error('删除文件时出错:', err);
    } else {
        console.log('文件删除成功');
    }
});

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\learning\rm.js

递归删除非空目录

javascript 复制代码
const fs = require('fs');

const dirPath = 'exampleDir';
// 参数1: 目录路径
// 参数2: 配置对象
// recursive: 是否递归删除子目录和文件
// force: 是否强制删除
// 参数3: 回调函数
fs.rm(dirPath, { recursive: true, force: true }, (err) => {
    if (err) {
        console.error('删除目录时出错:', err);
    } else {
        console.log('目录及其子目录和文件删除成功');
    }
});

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\learning\rm.js

6. fs.readdir():获取目录下的文件和子目录列表。

语法格式:

javascript 复制代码
fs.open(path, flags[, mode], callback)

参数解释:

参数1: 必选参数,文件路径。

参数2: 必选参数,打开文件的方式读写

参数3: 可选参数,设置文件模式(权限),默认为 0666(可读写)

参数4: 必选参数,回调函数。带有两个参数如:callback(err, fd)

javascript 复制代码
// 导入文件系统模块
const fs = require('fs');

const directoryPath = '.'; // 当前目录

// 参数1: 目录路径
// 参数2: 配置对象
// withFileTypes: 是否返回fs.Dirent对象
// 参数3: 回调函数
fs.readdir(directoryPath, { withFileTypes: true }, (err, files) => {
    if (err) {
        console.error('读取目录时出错:', err);
        return;
    }
    files.forEach((file) => {
        if (file.isDirectory()) {
            console.log(`${file.name} 是一个目录`);
        } else {
            console.log(`${file.name} 是一个文件`);
        }
    });
});

写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】

bash 复制代码
node C:\Users\Administrator\Desktop\readdir.js
相关推荐
大筒木老辈子8 分钟前
Linux笔记---协议定制与序列化/反序列化
网络·笔记
草莓熊Lotso16 分钟前
【C++】递归与迭代:两种编程范式的对比与实践
c语言·开发语言·c++·经验分享·笔记·其他
我爱挣钱我也要早睡!3 小时前
Java 复习笔记
java·开发语言·笔记
汇能感知8 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun8 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao8 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾9 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT9 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
ST.J10 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记
Suckerbin10 小时前
LAMPSecurity: CTF5靶场渗透
笔记·安全·web安全·网络安全