7

Node.js 中的 fs 模块的使用

 4 years ago
source link: https://mp.weixin.qq.com/s/0bphpBWIAtgOiGR-DprSxg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

fYj26fe.gif

JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。

fs 模块提供了非常多的接口,这里主要说一下一些常用的接口。

常用API快速复习

fs.stat 检测是文件还是目录

YFbmAbr.png!web

fs.mkdir 创建目录

AF36jen.png!web

fs.rmdir 删除目录

mmYNvqQ.png!web

fs.wireFile 创建写入文件

VjAjMjq.png!web

fs.appendFile 追加文件

B3mA3iz.png!web

fs.readFile 读取文件

b6JF7fn.png!web

fs.unlink 删除文件

fuayMvJ.png!web

fs.readdir 读取目录

miUzY32.png!web

fs.rename 重命名,还可以更改文件的存放路径

jMbANvI.png!web

第三方 NPM 包 mkdirp 的使用

mkdirp 不仅可以创建文件夹,还可以创建多层的文件夹,类似  mkdir -p  命令

midir -p tmp/foo/bar/baz

上述命令也可以在当前目录创建多层级文件夹。

如下代码在当前目录生成多层级文件夹

fy6byyr.png!web

结果

fMFFN3A.png!web

实战举例

实战1

判断服务器上面有没有 upload 目录。如果没有就创建这个目录,如果有的话不做操作

uQ3IfeB.jpg!web

实战2

wwwroot 文件夹下面有 images css js 以及 index.html, 找出 wwwroot 目录下面的所有的目录,然后放在一个数组中

使用同步方法方式

viuIven.png!web

使用 async/await 方式

QbAJFrA.jpg!web

管道流

管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外一个流中。以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。

iaa2QfE.png!web

fs.createReadStream  从文件流中读取数据

AZb6fqV.jpg!web

fs.createWriteStream  从文件流中写入数据

AVJrEbR.jpg!web

实战:复制图片

在项目根目录有一张图片 2020.png ,把它复制到  /wwwroot/images  中

EZ7Zn2Z.jpg!web

代码如下

eAjUVv7.png!web

需要特别注意的是, fs.createWriteStream  要写入的目录一定要带上要复制的文件名,也就是不能写成  fs.createWriteStream('./wwwroot/images/')  否则在 macOS 下会报如下错误:

Error: EISDIR: illegal operation on a directory, open <directory>

完。

本文源码: https://github.com/dunizb/CodeTest/tree/master/Node/fs

jei6jqr.gif

全文完

访问带链接版请点击阅读原文

往期精彩回顾   

聚焦 大前端 技术和 成长 的公众号

关注我的公众号,第一时间接收原创、精选干货文章

3EZJve3.jpg!web

iEF77fm.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK