Node.js-fs模块文件创建、删除、重命名、文件内容的写入、读取以及文件夹的相关操作
一、写入文件操作
异步写入:writeFile()
同步写入:writeFileSync()
const fs = require("fs");
fs.writeFile("目标文件路径", "要写入的内容", err => {if(err){console.log(err);return;}console.log("写入成功!");
})
二、文件追加写入操作
异步追加写入:appendFile()
同步追加写入:appendFileSync()
方式一(appendFile):
const fs = require("fs");
fs.appendFile("目标文件路径", "要追加写入的内容", err => {if(err){console.log(err);return;}console.log("追加写入成功!");
})
方式二(writeFile):
const fs = require("fs");
fs.writeFile("目标文件路径", "要追加写入的内容", { flag: "a" }, err => {if(err){console.log(err);return;}console.log("追加写入成功!");
})
三、文件流式写入操作
fs.createWriteStream( path [, options ] )
- 程序打开一个文件是需要消耗资源的 ,流式写入可以减少打开关闭文件的次数。
- 流式写入方式适用于大文件写入或者频繁写入的场,writeFile 适合于写入频率较低的场景。
// 导入 fs 模块
const fs = require("fs");
// 创建写入流对象
const ws = fs.createWriteStream("目标文件路径");
// write 写入
ws.write("我喜欢你脸红红的样子,");
ws.write("更喜欢你气喘吁吁的样子。");
// 关闭写入流通道
ws.close();
四、文件读取操作
异步读取:readFile()
同步读取:readFileSync()
- 通过程序从文件中取出其中的数据
const fs = require("fs");
fs.readFile("目标文件路径", (err, data) => {if(err){console.log(err)return;}// 读取成功后的内容console.log(data.toString())
})
应用场景: 电脑开机、程序运行、编根器打开文件、查看图片、放视频、放音乐、Git查看日志、上传文件、查找聊天记录等。
五、文件流式读取操作
const fs = requrie("fs");
// 创建读取流对象
const rs = fs.createReadStream("目标文件路径");
// 绑定 data 事件,chunk 表示文件块儿
rs.on("data", chunk => {console.log(chunk);
})
// end 可选事件
rs.on("end", () => {console.log("文件读取成功!");
})
六、文件复制操作
- 方式一
// 先读取文件,再把读取到的内容写入到另一个文件中。
const fs = require("fs");
const data = fs.readFileSync("源文件路径");
fs.writeFileSync("目标文件路径", data);
- 方式二(推荐)
// 通过流式操作,占用内存空间少
const fs = requrie("fs");
const rs = fs.createReadStream("源文件路径");
const ws = fs.createWriteStream("目标文件路径");
// 绑定 data 事件
fs.on("data", chunk => {ws.write(chunk);
})
七、文件重命名和移动操作
异步操作:rename(oldPath, newPath, callback)
同步操作:renameSync(oldPath, newPath)
// 通过 rename 完成文件重命名
const fs = require("fs");
fs.rename("./index.html", "./main.html", err => {if(err){console.log(err);return;}console.log("文件重命名成功!");
})
// 通过 rename 完成文件移动
const fs = require("fs");
fs.rename("./index/index.html", "./main/index.html", err => {if(err){console.log(err);return;}console.log("文件移动成功!");
})
八、文件删除操作
异步删除:unlink(path, callback)
同步删除:unlinkSync(path)
- 方式一
const fs = requrie("fs");
fs.unlink("要删除的文件路径", err => {if(err){console.log(err);return;}console.log("文件删除成功!");
})
异步删除:rm(path, callback)
同步删除:rmSync(path)
- 方式二
const fs = requrie("fs");
fs.rm("要删除的文件路径", err => {if(err){console.log(err);return;}console.log("文件删除成功!");
})
九、文件夹操作
创建文件夹:mkdir()
const fs = require("fs");
fs.mkdir("要创建的文件夹", err => {if(err){console.log(err);return;}console.log("文件夹创建成功!");
})
递归创建文件夹(多级文件夹目录):
const fs = require("fs");
fs.mkdir("./a/b/c", { recursive: true }, err => {if(err){console.log(err);return;}console.log("文件夹创建成功!");
})
读取文件夹:readdir()
const fs = require("fs");
fs.readdir("./index", (err, data) => {if(err){console.log(err);return;}// 获取目标文件夹当中资源名称列表console.log(data);
})
删除文件夹:rmdir()
const fs = require("fs");
fs.rmdir("./index", err => {if(err){console.log(err);return;}console.log("删除成功!");
})
递归删除文件夹(多级文件夹目录):
const fs = require("fs");
fs.rm("./index", { recursive: true }, err => {if(err){console.log(err);return;}console.log("删除成功!");
})
十、查看资源信息
const fs = require("fs");
// stat status缩写 状态
fs.stat("./index/index.html", (err, data) => {if(err){console.log(err);return;}console.log(data); // 获取文件资源信息console.log(data.isFile()); // true 是否为文件console.log(data.isDirectory()); // false 是否为文件夹
})
相关文章:
Node.js-fs模块文件创建、删除、重命名、文件内容的写入、读取以及文件夹的相关操作
一、写入文件操作 异步写入:writeFile() 同步写入:writeFileSync() const fs require("fs"); fs.writeFile("目标文件路径", "要写入的内容", err > {if(err){console.log(err);return;}console.log("写入成功&a…...

LIN协议总结
目录 一、LIN是什么1、LIN的概念2、扩展介绍一下同步通信和异步通信的区别3、LIN连接结构及节点构成 二、LIN的特点三、LIN协议层1、帧的结构2、帧的类型3、进度表4、状态机实现5、网络管理6、状态管理 四、帧收发的硬件实现1、组成2、硬件特点3、协议控制器4、总线收发器5、LI…...

Redis BigKey案例
面试题: 阿里广告平台,海量数据里查询某一固定前缀的key小红书,你如何生产上限制keys*/flushdb/flushall等危险命令以防止误删误用?美团,MEMORY USAGE命令你用过吗?BigKey问题,多大算big&#…...

ThinkPHP v6.0.8 CacheStore 反序列化漏洞
漏洞说明 1. 漏洞原理:ThinkPHP 6.0.8 CacheStore 会触发POP利用链子,造成任意命令执行 2. 组件描述: ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架 3. 影响版本:V6.0.8 漏洞复现 1. 环境安…...

Spring 事务详解(注解方式)
目 录 序言 1、编程式事务 2、配置声明式事务 2.1 基于TransactionProxyFactoryBean的方式(不常用,因为要为每一个类配置TransactionProxyFactoryBean) 2.2 基于AspectJ的XML方式(常用,可配置在某些类下的所有子…...
华为云waf 使用场景
防护Web应用免受攻击就用华为云Web应用防火墙 Web应用防火墙(Web Application Firewall, WAF),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第…...
?.的写法 后缀修饰符
概览:处理后端返回的数据data,写法:data?.name。解决vue框架编译出现的报错Cannot read property name of undefined。出现问题的原因:这是因为我们试图访问对象中不在的 key 为 name 的属性,那么怎么解决呢ÿ…...

org.apache.hadoop.hive.ql.exec.DDLTask. show Locks LockManager not specified解决
Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. show Locks LockManager not specified解决 当在Hive中执行show locks语句时,出现"LockManager not specified"错误通常是由于…...

Adaptive autosar 都有哪些模块?各有什么功能?
Adaptive autosar是一种用于高性能计算ECU的软件平台,它支持自适应应用程序的开发和运行。它由两部分组成:基础(Foundation)和服务(Service)。基础包括了操作系统接口、执行管理、网络管理、识别访问管理、加密、更新和配置管理等功能。服务包括了通信管理、RESTful、时间…...

C++ 动态内存分配
在C中动态内存的分配技术可以保证程序在允许过程中按照实际需要申请适量的内存,使用结束后还可以释放,这种在程序运行过程中申请和释放的存储单元也称为堆。 申请和释放过程一般称为建立和删除。 在C程序中,建立和删除堆对象使用两个运算符&…...
设计模式——面向对象的7大设计原则
1.单一职责原则 一个类中最好只放一种类型的方法,比如Dao中只有和数据库交互相关的代码。实现高内聚,低耦合。 2.开闭原则 对外拓展开放,对内修改关闭,有新的需求时不要修改已有代码,而是添加新的代码,比…...

智慧防汛,数字科技的力量
随着夏日的脚步临近,台风季节即将降临。对于那些居住在沿海地区的人们来说,台风是一种常见的自然灾害,其带来的风雨可能对生命和财产造成严重威胁。然而,随着数字科技的飞速发展,可视化技术为防汛抗台工作带来了全新的…...

“中国软件杯”飞桨赛道晋级决赛现场名单公布
“中国软件杯”大学生软件设计大赛是由国家工业和信息化部、教育部、江苏省人民政府共同主办,是全国软件行业规格最高、最具影响力的国家级一类赛事,为《全国普通高校竞赛排行榜》榜单内赛事。今年,组委会联合百度飞桨共同设立了“智能系统设…...

JDBC处理批量数据提高效率
文章目录 0 说明1 如何使用jdbc操作数据库1.1 加载数据库驱动1.2 建立数据库连接1.3 创建Statement或者PreparedStatement用来执行SQL1.4 开始执行SQL语句1.5 处理结果集1.6 关闭连接1.7 完整代码 2 批量操作数据库3 如何打印SQL语句4 jdbc常用开源类库 1 JDBC实现往MySQL插入百…...

使用css和js给按钮添加微交互的几种方式
使用css和js给按钮添加微交互的几种方式 在现实世界中,当我们轻弹或按下某些东西时,它们会发出咔嗒声,例如电灯开关。有些东西会亮起或发出蜂鸣声,这些响应都是“微交互”,让我们知道我们何时成功完成了某件事。在本文…...
react面试之context的value变化时,内部所有子组件是否变化
上测试代码 // context const state {a: 1,b: 1, } const context createContext(state);export default context; // A组件 const A () > {const { a } useContext(context);return (<div>{a}</div>) } export default A;// B组件 const B () > {cons…...
使用okHttp不走代理问题
背景 某日使用okhttp设置代理并发送爬虫请求时,发现部分url请求没有走代理直接和目标url建立了连接,伪代码如下。初始化okhttpClient时设置了proxySelecter代理,但是调用okhttpClient.newCall请求时并没用调用proxySelecter.select函数获取代…...
python moviepy 自动化音视频处理实践
MoviePy是一个用于视频编辑的Python库。它提供了一种简单且直观的方式来处理视频文件,包括剪辑、合并、裁剪、添加文本、添加音频等操作。使用MoviePy,你可以通过编写Python代码来创建和编辑视频,而无需使用复杂的视频编辑软件。 MoviePy建立…...

聊聊混合动力汽车和纯电骑车的优势和劣势
混合动力汽车和纯电动骑车是两种不同的交通工具,它们都有各自的优势和劣势。本文将分别探讨混合动力汽车和纯电动骑车的优势和劣势,并为文章提供三个备选的好听的标题。 混合动力汽车是一种结合了内燃机和电动机的汽车,它可以同时利用燃油和电…...
算法训练Day39|62.不同路径 ● 63. 不同路径 II
LeetCode:62.不同路径 62. 不同路径 - 力扣(LeetCode) 1.思路 想象成矩阵填格子,两个关键点,初始化和递推公式。 初始化除点(0,0)第一行第一列均为1,递推公式推导dp[i][j] dp[i …...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...