【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
相关推荐
码林鼠18 小时前
webpack的基本配置
前端·webpack·node.js
Hotchip_MEMS20 小时前
当雾化器遇上MEMS:一场从交互到制造的全链路效率提升
人工智能·笔记·物联网·电脑·制造
是上好佳佳佳呀20 小时前
【深度学习|Day02】PyTorch 深度学习笔记(下):张量运算与自动微分
pytorch·笔记·深度学习
FeelTouch Labs1 天前
Node.js 中的 spawn 和 exec:子进程执行的不同方式对比
node.js·编辑器·vue·vim
IT古董1 天前
【MES学习笔记系列】05 - MES 数据库设计
笔记·学习·mes
不瘦80斤不改名1 天前
05-vibe-coding-向agentic-engineering演进
人工智能·笔记·python·prompt
九硕智慧建筑一体化厂家1 天前
直流照明|无尘风淋室照明,高均匀无频闪,适配洁净车间高频合规工况
大数据·人工智能·笔记·智慧城市
LATASA1 天前
【 从0到1构建 Agent Harness学习笔记】
网络·笔记·学习
FakeOccupational1 天前
【电路笔记 仿真】SPICE仿真器软件 LTspice:绘制简单电路(新建图页+添加组件)并仿真+模型导入+SUBCKT (子电路)绘制与使用+特殊器件绘制
笔记
烂蜻蜓1 天前
Node.js入门教程(一):初识Node.js——服务端JavaScript的诞生与特点
开发语言·javascript·node.js