node fs模板及蓝桥案例实战

文章目录

  • 介绍
  • 文件写入
    • writeFile 异步写入
    • writeFileSync 同步写入
    • appendFile / appendFileSync 追加写入
    • createWriteStream 流式写入
  • 文件读取
    • readFile 异步读取
    • readFileSync 同步读取
    • createReadStream 流式读取
  • 文件移动与重命名
  • 文件删除
  • 文件夹操作
    • mkdir / mkdirSync 创建文件夹
    • readdir / readdirSync 读取文件夹
    • rmdir / rmdirSync 删除文件夹
  • __dirname
  • 实战

介绍

fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块 ,可以对计算机中的磁盘进行操作。
主要操作有:
1.文件写入

2.文件读取

3.文件移动与重命名

4.文件删除

5.文件夹操作

6.查看资源状态

文件写入

writeFile 异步写入
writeFileSync 同步写入
appendFile / appendFileSync 追加写入
createWriteStream 流式写入

writeFile 异步写入

fs.writeFile(file, data[, options], callback)

参数说明:

file 文件名

data 待写入的数据

options 选项设置 (可选)

callback 写入回调

writeFileSync 同步写入

语法: fs.writeFileSync(file, data[, options])

appendFile / appendFileSync 追加写入

appendFile 作用是在文件尾部追加内容,appendFile 语法与 writeFile 语法完全相同

语法:

fs.appendFile(file, data[, options], callback)fs.appendFileSync(file, data[, options])

createWriteStream 流式写入

语法:fs.createWriteStream(path[, options])
参数说明:

path 文件路径

options 选项配置( 可选 )

文件读取

readFile 异步读取
readFileSync 同步读取
createReadStream 流式读取

readFile 异步读取

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

参数说明:

path 文件路径

options 选项配置

callback 回调函数

readFileSync 同步读取

语法:fs.readFileSync(path[, options])
参数说明:

path 文件路径

options 选项配置

createReadStream 流式读取

语法:fs.createReadStream(path[, options])
参数说明:

path 文件路径

options 选项配置( 可选 )

文件移动与重命名

语法:

fs.rename(oldPath, newPath, callback)fs.renameSync(oldPath, newPath)

参数说明:

oldPath 文件当前的路径

newPath 文件新的路径

callback 操作后的回调

文件删除

语法:

fs.unlink(path, callback)fs.unlinkSync(path)

参数说明:

path 文件路径

callback 操作后的回调

文件夹操作

mkdir / mkdirSync 创建文件夹

语法:

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

参数说明:

path 文件夹路径

options 选项配置( 可选 )

callback 操作后的回调

readdir / readdirSync 读取文件夹

语法:

fs.readdir(path[, options], callback)fs.readdirSync(path[, options])

参数说明:

path 文件夹路径

options 选项配置( 可选 )

callback 操作后的回调

rmdir / rmdirSync 删除文件夹

语法:

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

参数说明:

path 文件夹路径

options 选项配置( 可选 )

callback 操作后的回调

__dirname

使用 fs 模块的时候,尽量使用 __dirname 路径转换为绝对路径,这样可以避免相对路径产生的 Bug

//=>__dirname + '/data.txt'  === 'D:\\Desktop\\Node\\code\\03-fs模块/data.txt'
let data = fs.readFileSync(__dirname + '/data.txt')
console.log(data) 

实战

在这里插入图片描述

const path = require("path");
const fs = require("fs");const articlesPath = path.resolve(__dirname, "articles");
const imagesPath = path.resolve(__dirname, "images");let findUnlinkImages = async function () {let unlinkImages = []; // 未被任何 md 文件引用的图片的数组// TODO 请通过 Node.js 在此处继续完成代码编写//异步执行操作
await traversalDir(articlesPath)//遍历文章文件
.then(files => {files.forEach(file => {searchImage(fs.readFileSync(path.resolve(articlesPath, file)))//提取文章链接//遍历完已经存入数组});
})
.then(()=>{return traversalDir(imagesPath)//遍历图片文件
}).then((files) =>{unlinkImages = files.filter((file) => !useImgs.includes(`../images/${file}`))//过滤数组
})return unlinkImages; // 此处应返回一个数组,如不明白,请仔细阅读题目
};// 参考方法: 遍历文件列表
function traversalDir(path) {return new Promise((resolve) => {fs.readdir(path, async function (err, files) {if (!err) {resolve(files);}});});
}let useImgs = [];
/*** 参考方法: 正则提取文章内的全部图片链接* @param {string} md 传入的markdown文本内容* @returns 包含所有图片链接的数组*/
function searchImage(md) {const pattern = /!\[(.*?)\]\((.*?)\)/gm;let matcher;while ((matcher = pattern.exec(md)) !== null) {if (matcher[2].indexOf("images") !== -1) {// 判断存在图片,matcher[2] 即为包含的链接useImgs.push(matcher[2]);}}return useImgs;
}module.exports = findUnlinkImages; // 请勿删除该行代码,否则影响判题!

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

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

相关文章

Python基础:JSON保存结构化数据(详解)

1. JSON概念 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生产。   虽然JSON使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言和平台,JSON解…

三菱PLC编码器转速测量功能块(梯形图和ST代码)

编码器转速测量功能块算法公式详细讲解请参考下面文章链接: SMART PLC编码器转速测量功能块(高速计数器配置+梯形图)-CSDN博客文章浏览阅读427次。里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算法,…

Springboot实现增删改差

一、包结构 二、各层代码 (1)数据User public class User {private Integer id;private String userName;private String note;public User() {super();}public User(Integer i, String userName, String note) {super();this.id i;this.userName userName;this.note note;…

抖音生态融合:开发与抖音平台对接的票务小程序

为了更好地服务用户需求,将票务服务与抖音平台结合,成为了一个创新的方向。通过开发票务小程序,用户可以在抖音平台上直接获取相关活动的票务信息,完成购票、预订等操作,实现了线上线下的有机连接。 一、开发过程 1…

线程池(用于处理Runnable任务或Callable任务)

一&#xff0c;线程池 二&#xff0c; 如何创建线程池 案例&#xff1a; //1,通过ThreadPoolExecuter创建一个线程池对象ExecutorService pool new ThreadPoolExecutor(3,5,8,TimeUnit.SECONDS,new LinkedBlockingQueue<>(4),Executors.defaultThreadFactory(),new Thr…

关于pytorch以及相关包的安装教程

一.查看自己电脑的配置 首先查看自己电脑的cuda的版本&#xff0c;WinR,敲入cmd打开终端 输入nvidia-smi&#xff0c;查看自己电脑的显卡等配置 这里要说明一下关于这个CUDA,它具有向后兼容性&#xff0c;这意味着支持较低版本的 CUDA 的应用程序通常也可以在较高版本的 CUD…

E5052A/安捷伦Agilent E5052A信号源分析仪

181/2461/8938产品概述 是德科技E5052A(安捷伦)信号源分析仪&#xff0c;10 MHz至7 GHz&#xff0c;具有许多增强的性能特征。在表征VCO或其它类型的高频信号源、aw以及高速数据通信系统中的时钟抖动评估方面&#xff0c;它提供了世界上最高的测量吞吐量和最佳可用性。 是德科…

Python武器库开发-前端篇之CSS盒模型(三十一)

前端篇之CSS盒模型(三十一) CSS盒模型是指网页中的每个元素可以看做是一个矩形盒子&#xff0c;该盒子有四个主要部分组成&#xff1a;content、padding、border和margin。其中&#xff1a; content&#xff1a;指盒子中的内容区域&#xff0c;可以包含文本、图像、视频、其他…

【C++】构造函数和析构函数第四部分(深拷贝和浅拷贝)--- 2023.11.25

目录 什么是浅拷贝&#xff1f;浅拷贝的问题使用深拷贝解决浅拷贝问题结束语 什么是浅拷贝&#xff1f; 如果在一个类中没有人为定义拷贝函数&#xff0c;则系统会提供默认拷贝函数。那么在此默认拷贝函数中主要进行了简单的赋值操作&#xff0c;那这个简单的赋值操作我们一般…

RK3568驱动指南|第八篇 设备树插件-第72章 设备树插件语法和编译实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

曲线拟合:走进数据建模中的艺术与科学

在现代科学和工程领域&#xff0c;曲线拟合是一项重要的数据分析技术&#xff0c;它可以通过数学模型来近似描述实际数据中的复杂关系。本文将详细介绍曲线拟合的基本概念、方法和应用领域&#xff0c;并探究其在数据建模中的艺术与科学。 第一节&#xff1a;曲线拟合的基本概…

中职网安-Linux操作系统渗透测-Server2130(环境加qq)

B-9:Linux操作系统渗透测 任务环境说明:  服务器场景:Server2130  服务器场景操作系统:Linux(关闭链接) 1.通过本地PC中渗透测试平台Kali对靶机场景进行系统服务及版本扫描渗透测试,并将该操作显示结果中Apache服务对应的版本信息字符串作为Flag值提交; 2.…