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.mzph.cn/news/169487.shtml

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

相关文章

python操作redis

操作单redis 需要安装redis模块:pip install redis demo: #!/usr/bin/env python3 # coding utf-8import redis import threadingdef a():conn redis.Redis(host"192.168.1.66", port6379, password"123456", db6,# decode_res…

数据库表结构导出成Excel或Word格式

前言 该工具主要用于导出excel、word,方便快速编写《数据库设计文档》,同时可以快速查看表的结构和相关信息。 本博客仅作记录,最新源码已经支持多种数据库多种格式导出,有兴趣的可移步源码作者地址:https://gitee.co…

模运算Mod

模运算是一种数学运算,通常用于计算机编程和数论中。它表示的是两个整数相除后的余数。在编程中,模运算符(%)用于计算一个数除以另一个数的余数。在数论中,模运算可以用于解决一些与整数除法有关的问题,如最…

RK3568驱动指南|第八篇 设备树插件-第73章 设备树插件使用实验

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

二十三种设计模式全面解析-深入探讨状态模式的高级应用技术:释放对象行为的无限可能

在软件开发中,状态管理是一个常见的挑战。当对象的行为随着内部状态的变化而变化时,有效地管理对象的状态和相应的行为变得至关重要。在这方面,状态模式提供了一种优雅而灵活的解决方案。它允许对象在运行时根据内部状态的改变而改变其行为&a…

【Redis】前言--redis产生的背景以及过程

一.介绍 为什么会出现Redis这个中间件,从原始的磁盘存储到Redis中间又发生了哪些事,下面进入正题 二.发展史 2.1 磁盘存储 最早的时候都是以磁盘进行数据存储,每个磁盘都有一个磁道。每个磁道有很多扇区,一个扇区接近512Byte。…

MYSQL基础之【创建数据表,删除数据表】

文章目录 前言MySQL 创建数据表通过命令提示符创建表使用PHP脚本创建数据表 MySQL 删除数据表在命令提示窗口中删除数据表使用PHP脚本删除数据表 后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱‍👓博主…

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

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

制作docker镜像

1. 什么是Docker镜像 Docker镜像是Docker容器的模板&#xff0c;是Docker容器运行的基础。 2. 制作docker镜像的方式与流程 2.1 基于Dockerfile制作镜像 2.1.1 Dockerfile的基本语法 # 指定基础镜像 FROM <image> # 维护者信息 MAINTAINER # 指定镜像标签 LABEL <…

Android frameworks 开发总结之十(lock screen message Battery Last full charge)

1.設置lock screen message後不显示 XXXt設備設置lock screen message後&#xff0c;發現鎖頻界面不顯示內容&#xff0c;像時間日期都不顯示。只在右上角顯示一個鎖圖標&#xff0c;需要向下滑動一下才能顯示出來。布局文件位置: frameworks/base/packages/SystemUI/res-keygu…

原生实现底部弹窗效果 h5 小程序

<template><div class"home"><div class"btn" click"showPopupshow">弹出底部蒙层</div><div class"popup " catchtouchmove"true" :class"showPopup" ><div class"mask&q…

element使用小结

1、tabel表头文字自定义效果&#xff08;换行&#xff0c;不同颜色&#xff09; 换行&#xff1a; // 方法一 <el-table-columnprop"otherCost":label"本期累计\n(元)"> // 通过:label添加\n </el-table-column>.xx .cell {white-space: pre-…

城市NOA加速落地,景联文科技高质量数据标注助力感知系统升级

当前&#xff0c;自动驾驶技术的演进正在经历着从基础L2到L3过渡的重要阶段&#xff0c;其中NOA&#xff08;自动辅助导航驾驶&#xff09;扮演着至关重要的角色。城市NOA&#xff08;L2.9&#xff09;作为城市场景下的NOA&#xff0c;被看作是车企向更高阶自动驾驶迈进的必经之…

无线网络下VMWare+CentOS7使用桥接模式无法联通网络问题

因为最近新配了台带无线网卡的主机&#xff0c;所以准备把所有的内容都转移到新电脑上&#xff0c;其中就包括虚拟机 安装好VMWareCentOS7选择桥接模式 然后我们去修改一下网络配置 cd /etc/sysconfig/network-scripts/进入这个ifcfg-ens33文件 我们修改箭头所示内容&#xff…

Eclipse安装EvoSuite插件

Eclipse安装EvoSuite插件 EvoSuite自动为Java类生成JUnit测试套件,针对分支覆盖率等代码覆盖率标准。为了提高可读性,生成的单元测试被最小化,并且捕获被测试类的当前行为的回归断言被添加到测试中。 EvoSuite的GitHub地址:https://github.com/EvoSuite/evosuite 📕Ecl…

BART - 磁共振重建库 linux系统安装 MATLAB 使用

本文主要介绍如何在linux系统中安装伯克利大学的磁共振重建库BART 和在matlab中的配置使用。 安装必要的库 (linux 命令行) $ sudo apt-get install make gcc libfftw3-dev liblapacke-dev libpng-dev libopenblas-dev 下载编译BART 文件 (官网链接:BART Toolbox) 命令行下…

UML建模图文详解教程08——部署图

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;《UML面向对象分析、建模与设计&#xff08;第2版&#xff09;》吕云翔&#xff0c;赵天宇 著 部署图概述 部署图(deployment diagram)也被译作配置…

深入浅出 Linux 中的 ARM IOMMU SMMU II

SMMU 驱动中的系统 I/O 设备探测 要使系统 I/O 设备的 DMA 内存访问能通过 IOMMU&#xff0c;需要将系统 I/O 设备和 IOMMU 设备绑定起来&#xff0c;也就是执行 SMMU 驱动中的系统 I/O 设备探测。总线发现系统 I/O 设备并和对应的驱动程序绑定&#xff0c;与 IOMMU 设备驱动程…

腾讯云被打黑洞了怎么办

前两天有个客户联系我说他在腾讯云的服务器被攻击了&#xff0c;进了黑洞&#xff0c;需要好几个小时才给解&#xff0c;当时为了业务能正常运转狠心上了腾讯云的DDOS高防&#xff0c;事后整理下成本支出&#xff0c;发现好几月都白干了&#xff0c;哭诉着说有没有什么便宜好用…

LSTM模型预测时间序列:根据历史销量数据预测商品未来销量

经常会遇到一些需要预测的场景&#xff0c;比如预测品牌销售额&#xff0c;预测产品销量。 时间序列 今天分享一波使用 LSTM 进行端到端时间序列预测的完整代码和详细解释。 我们先来了解两个主题&#xff1a; 什么是时间序列分析&#xff1f; 什么是 LSTM&#xff1f; 时…