防止网站被克隆,济南市住房和城乡建设局官方网站,广西壮族自治区招生考试院,企业网站设计的重要性文章目录 介绍文件写入writeFile 异步写入writeFileSync 同步写入appendFile / appendFileSync 追加写入createWriteStream 流式写入 文件读取readFile 异步读取readFileSync 同步读取createReadStream 流式读取 文件移动与重命名文件删除文件夹操作mkdir / mkdirSync 创建文件… 文章目录 介绍文件写入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; // 请勿删除该行代码,否则影响判题!