介绍
如何在节点。js中使用文件系统fs模块?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
fs是文件系统的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装。但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择。
JavaScript的是没有操作文件的能力,但是节点是可以做到的,节点提供了操作文件系统模块,是节点中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。
<强> 1。常用API快速复习强>
<强> fs。统计检测是文件还是目录强>
const fs =,需要(& # 39;fs # 39;) fs.stat (& # 39; hello.js& # 39;,,(错误,数据)=祝辞{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(统计) ,console.log(“文件:$ {stats.isFile ()}”) ,console.log(“目录:$ {stats.isDirectory ()}”) ,} })
<强> fs。mkdir创建目录强>
const fs =,需要(& # 39;fs # 39;) fs.mkdir(& # 39;日志# 39;,,error =祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(& # 39;目录创建成功! & # 39;) ,} })
<强> fs。删除文件夹删除目录强>
const fs =,需要(& # 39;fs # 39;) fs.rmdir(& # 39;日志# 39;,,error =祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(& # 39;成功删除了目录,日志# 39;) ,} })
<强> fs。writeFile创建写入文件强>
const fs =,需要(& # 39;fs # 39;) fs.writeFile(& # 39;日志/hello.log& # 39;, & # 39;您好~ \ n # 39;,, error =祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(& # 39;成功写入文件& # 39;); ,} })
<强> fs。appendFile追加文件强>
const fs =,需要(& # 39;fs # 39;) fs.appendFile(& # 39;日志/hello.log& # 39;, & # 39;你好~ \ n # 39;,, error =祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(& # 39;成功写入文件& # 39;); ,} })
<强> fs。readFile读取文件强>
const fs =,需要(& # 39;fs # 39;) fs.readFile(& # 39;日志/hello.log& # 39;, & # 39; utf - 8 # 39;,,(错误,,数据),=祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(数据); ,} })
<强> fs。拆开删除文件强>
const fs =,需要(& # 39;fs # 39;) fs.unlink(日志/$ {file},, error =祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(“成功删除了文件:,$ {file} ') ,} })
fs。readdir读取目录
const fs =,需要(& # 39;fs # 39;) fs.readdir(& # 39;日志# 39;,,(错误,,文件),=祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(文件); ,} })
<强> fs。重命名重命的名,还可以更改文件的存放路径强>
const fs =,需要(& # 39;fs # 39;) fs.rename (& # 39; js/hello.log& # 39;,, & # 39; js/greeting.log& # 39;,, error =祝辞,{ ,如果(错误){ ,console.log(错误) ,}else { ,console.log(& # 39;重命名成功& # 39;) ,} })
<强> 2。第三方NPM包mkdirp的使用强>
mkdirp不仅可以创建文件夹,还可以创建多层的文件夹,类似mkdir - p命令
<代码> midir - p/tmp/foo/bar巴兹代码>
上述命令也可以在当前目录创建多层几文件夹。
如下代码在当前目录生成多层级文件夹
const mkdirp =,需要(& # 39;mkdirp& # 39;) mkdirp (& # 39; tmp/foo/bar/巴兹# 39;),然后(made =祝辞,console.log(“创建目录于:,$ {}”))//,创建目录于:,/用户/zhangbing/github/CodeTest/节点/fs/tmp
结果
<强> 3。实战举例强>
实战1
判断服务器上面有没有上传目录。如果没有就创建这个目录,如果有的话不做操作
const fs =,需要(& # 39;fs # 39;) const path =, & # 39;。/上传# 39; fs.stat(路径,(呃,,数据),=祝辞,{ ,如果(err) { ,//执行创建目录 ,mkdir(路径) ,返回 ,} ,如果(data.isDirectory ()), { ,console.log(& # 39;上传目录存在& # 39;); ,其他}{ ,//首先删除文件,再去执行创建目录 ,fs.unlink(路径,err =祝辞,{ 如果才能(!呃),{ mkdir才能(路径) ,,} ,}) ,} }) function mkdir (dir), { ,fs.mkdir (dir, err =祝辞,{ ,如果(err) { console.log才能(错); ,返回 ,} ,}) }如何在node . js中使用文件系统fs模块