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

Node.js入门笔记4

  • Node.js---fs 目录操作
  • 一、目录操作
    • 1.fs.mkdir():创建目录。异步,非阻塞。
      • 创建单个目录
      • 创建多个目录
      • 创建目前之前需要确认是否存在:
    • 2. fs.mkdirSync():用于创建一个新的目录。异步,非阻塞。
    • 3.fs.rmdir():删除空目录。异步。
    • 4. fs.rmdirSync():删除空目录。同步。
    • 5. fs.rm()(Node.js 14.4+):递归删除目录及内容。
    • 6. fs.readdir():获取目录下的文件和子目录列表。

Node.js—fs 目录操作

一、目录操作

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

语法格式:

fs.mkdir(path,[options] ,callback)

参数解读:
参数1:必选参数,字符串,表示要创建的目录的路径。
参数2:可选参数,表示以什么编码格式来读取文件。
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。

创建单个目录


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

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

node C:\Users\Administrator\Desktop\learning\mkdir.js

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

node

创建多个目录

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

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

node C:\Users\Administrator\Desktop\learning\mkdir.js

结果:C:\Users\Administrator\new-directory
node截图

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

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():用于创建一个新的目录。异步,非阻塞。

语法格式

fs.mkdirSync(path[, options])

参数解读:
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
参数2:必选参数,表示要写入的内容。

创建单个目录

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文件的路径】

node C:\Users\Administrator\Desktop\mkdirSync.js

结果如图:C:\Users\Administrator\newDir
在这里插入图片描述
创建多个目录

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文件的路径】

node C:\Users\Administrator\Desktop\mkdirSync.js

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

语法格式:

fs.rmdir(path[, options], callback)

参数解读:
参数1:必选参数,需要指定一个文件路径的字符串,表示要删除的路径。
参数2:可选参数,默认为 false。
参数3:必选参数,回调函数。

// 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文件的路径】

node C:\Users\Administrator\Desktop\learning\rmdir.js

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

语法格式:

fs.rmdirSync(path[, options])

参数解读:
参数1:必选参数,文件夹路径
参数2:可选参数,options对象或编码字符串

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

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文件的路径】

node C:\Users\Administrator\Desktop\rmdirSync.js

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

语法格式:

fs.rm(path, options, callback);

删除单个文件

// 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文件的路径】

node C:\Users\Administrator\Desktop\learning\rm.js

递归删除非空目录

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文件的路径】

node C:\Users\Administrator\Desktop\learning\rm.js

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

语法格式:

fs.open(path, flags[, mode], callback)

参数解释:
参数1: 必选参数,文件路径。
参数2: 必选参数,打开文件的方式读写
参数3: 可选参数,设置文件模式(权限),默认为 0666(可读写)
参数4: 必选参数,回调函数。带有两个参数如:callback(err, fd)

// 导入文件系统模块
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文件的路径】

node C:\Users\Administrator\Desktop\readdir.js

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP风险度自检,互联网的安全“指南针”

IP地址就像我们的网络“身份证”,而IP风险度则是衡量这个“身份证”安全性的重要指标。它关乎着我们的隐私保护、账号安全以及网络体验,今天就让我们一起深入了解一下IP风险度。 什么是IP风险度 IP风险度是指一个IP地址可能暴露用户真实身份或被网络平台…

【软考-架构】5.3、IPv6-网络规划-网络存储-补充考点

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 IPv6网络规划与设计建筑物综合布线系统PDS💯考试真题第一题第二题 磁盘冗余阵列网络存储技术其他考点💯考试真题第一题第二题 IPv6 网络规划与设计…

数据结构------线性表(顺序表)

一、线性表顺序存储详解 (一)线性表核心概念 1. 结构定义 // 数据元素类型 typedef struct person {char name[32];char sex;int age;int score; } DATATYPE;// 顺序表结构 typedef struct list {DATATYPE *head; // 存储空间基地址int tlen; …

SVN学习笔记

svn:版本控制软件 解决:1.协作开发 2.远程开发 3.版本回退 服务端软件: VisualSVN http://www.visualsvn.com 客户端软件:Tortoisesvn http://tortoisesvn.net/downloads 1.checkout(检出) 第一查更新数据到本地, 2.update&#xf…

uniapp-x js 限制

1.String(str) 不允许&#xff0c;android模拟室报错&#xff0c;找不到String 2.JSON.parse不接受泛类型 export const genData function<T> (initData:T) : T {return JSON.parse<T>(JSON.stringify(initData))!;//不可以&#xff0c;必须明确类型 } error: …

PyTorch使用-张量的创建

文章目录 张量的创建1. 安装 PyTorch2. 基本创建方式2.1 torch.tensor 根据指定数据创建张量2.2. torch.Tensor 根据形状创建张量, 其也可用来创建指定数据的张量2.3. 指定类型的张量创建2.3.1. torch.IntTensor&#xff1a;创建整数类型张量2.3.2. torch.FloatTensor&#xff…

基于asp.net实现的连锁餐厅收银系统[包运行成功+永久免费答疑辅导]

基于ASP.NET实现的连锁餐厅收银系统背景&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、技术背景 ASP.NET框架的普及与优势&#xff1a; ASP.NET是微软开发的一种用于构建Web应用程序的框架&#xff0c;它基于.NET Framework&#xff0c;提供了丰富的类库和开发工具…

PyTorch 深度学习实战(11):强化学习与深度 Q 网络(DQN)

在之前的文章中&#xff0c;我们介绍了神经网络、卷积神经网络&#xff08;CNN&#xff09;、循环神经网络&#xff08;RNN&#xff09;、Transformer 等多种深度学习模型&#xff0c;并应用于图像分类、文本分类、时间序列预测等任务。本文将介绍强化学习的基本概念&#xff0…

92.HarmonyOS NEXT开发学习路径与最佳实践总结:构建高质量应用

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT开发学习路径与最佳实践总结&#xff1a;构建高质量应用 文章目录 HarmonyOS NEXT开发学习路径与最佳实践总结&#xff1a;构建高质…

HarmonyOS-应用程序框架基础

应用程序框架与应用模型的区别 应用框架可以看做是应用模型的一种实现方式&#xff0c;开发人员可以用应用模型来描述应用程序的结构和行为的描述&#xff0c;然后使用应用程序框架来实现这些描述。 应用模型 应用模型是一个应用程序的模型&#xff0c;它是一种抽象的描述&a…

审批工作流系统xFlow

WorkFlow-审批流程系统 该项目为完全开源免费项目 可用于学习或搭建初始化审批流程系统 希望有用的小伙伴记得点个免费的star gitee仓库地址 仿钉钉飞书工作审批流系统 介绍 前端技术栈: vue3 ts vite arcodesign eslint 后端技术栈:springbootspring mvc mybatis mavenmysq…

数据传输对象 DTO

1. DTO 数据传输对象&#xff08;DTO, Data Transfer Object&#xff09;是一种设计模式&#xff0c;用于在不同系统或应用层之间封装和传输数据。它通常用于解耦领域模型&#xff08;如数据库实体&#xff09;和外部接口&#xff08;如API请求/响应&#xff09;&#xff0c;避…

本地算力部署大模型详细流程(二)

1、前景回顾 上一篇我们通过ollama本地部署了一个DeepSeek&#xff0c;因为没有前端操作页面&#xff0c;我们只能使用cmd的方式和deepseek对话体验感并不是很好&#xff0c;下面我们通过Docker部署一个前端页面&#xff08;Open WebUI&#xff09; Open WebUI地址&#xff1a;…

django+vue3实现前后端大文件分片下载

效果&#xff1a; 大文件分片下载支持的功能&#xff1a; 展示目标文件信息提高下载速度&#xff1a;通过并发请求多个块&#xff0c;可以更有效地利用网络带宽断点续传&#xff1a;支持暂停后从已下载部分继续&#xff0c;无需重新开始错误恢复&#xff1a;单个块下载失败只…

matlab中如何集成使用python

在 MATLAB 中集成使用 Python 可以通过调用 Python 脚本或函数来实现。MATLAB 提供了 py 模块来直接调用 Python 代码。以下是一个简单的示例&#xff0c;展示如何在 MATLAB 中调用 Python 函数。 示例&#xff1a;在 MATLAB 中调用 Python 函数 1. 编写 Python 函数 首先&a…

ICMP、UDP以及IP、ARP报文包的仲裁处理

在之前的章节中&#xff0c;笔者就UDP、ICMP、IP、ARP、MAC层以及巨型帧等做了详细介绍以及代码实现及仿真&#xff0c;从本章节开始&#xff0c;笔者将就各个模块组合在一起&#xff0c;实现UDP协议栈的整体收发&#xff0c;在实现模块的整体组合之前&#xff0c;还需要考虑一…

【大模型学习】第十九章 什么是迁移学习

目录 1. 迁移学习的起源背景 1.1 传统机器学习的问题 1.2 迁移学习的提出背景 2. 什么是迁移学习 2.1 迁移学习的定义 2.2 生活实例解释 3. 技术要点与原理 3.1 迁移学习方法分类 3.1.1 基于特征的迁移学习(Feature-based Transfer) 案例说明 代码示例 3.1.2 基于…

基于大模型的分泌性中耳炎全流程预测与治疗管理研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与目标 1.3 研究方法与创新点 二、分泌性中耳炎概述 2.1 疾病定义与特征 2.2 发病原因与机制 2.3 疾病危害与影响 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 选择大模型预测分…

【NLP 38、实践 ⑩ NER 命名实体识别任务 Bert 实现】

去做具体的事&#xff0c;然后稳稳托举自己 —— 25.3.17 数据文件&#xff1a; 通过网盘分享的文件&#xff1a;Ner命名实体识别任务 链接: https://pan.baidu.com/s/1fUiin2um4PCS5i91V9dJFA?pwdyc6u 提取码: yc6u --来自百度网盘超级会员v3的分享 一、配置文件 config.py …

蓝桥杯学习-11栈

11栈 先进后出 例题–蓝桥19877 用数组来设置栈 1.向栈顶插入元素--top位置标记元素 2.删除栈顶元素--top指针减减 3.输出栈顶元素--输出top位置元素使用arraylist import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(Str…