您现在的位置是:网站首页> 编程资料编程资料
总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识)_node.js_
2023-05-24
444人已围观
简介 总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识)_node.js_

本文主要介绍了Node.js常用的文件操作方法,以及常见的处理场景,文件追加,文件夹递归删除等。
一、前言
- fs.mkdir()
- fs.writeFile()
- fs.appendFile()
- fs.stat()fs.readFile()
- fs.readdir()
- fs.rename()
- fs.unlink()
- fs.rmdir()
二、fs.mkdir()创建文件夹
异步的创建一个文件夹:
语法:
fs.mkdir(path[,options],callback) /** * path| | * options
2.1 最简单的案例
最简单的案例,在当前目录下创建一个temp文件夹:
const fs = require('fs') fs.mkdir('./temp',(err)=>{ if(err){ console.log(err.message) return } console.log('创建文件夹成功') }) 代码执行结果:

2.2 递归创建文件夹
使用参数{recursive:true}创建多层次的文件夹。
fs.mkdir('./parent/son/grandson',{recursive:true},(err,path)=>{ if(err){ console.log(err.message) return } console.log('递归创建文件夹成功',path) })代码执行结果:

注意: 在使用{recursive:true}参数时,回调对应的会增加一个path参数,其他情况下没有。
三、fs.wirteFile()创建、写文件
当 file 是文件名时,将数据异步地写入文件,如果文件已存在则替换该文件。 data 可以是字符串或缓冲区。
当 file 是文件描述符时,其行为类似于直接调用 fs.write()(本文不涉及这种情况)。
语法:
fs.writeFile(file, data[, options], callback) /** * file| | | 文件名或文件描述符 * data | | | |
3.1 创建并写入一个文件
创建一个名为index.html的文件,并写入一行字符串。
fs.writeFile('./index.html',"你好,中国
",(err)=>{ if(err){ console.log(err.message) return } console.log("创建写入文件成功") })代码执行结果如下:

3.2 重写文件并指定编码
重写index.html,并为文件指定编码:
fs.writeFile('./index.html','面朝大海,春暖花开
','utf-8',(err)=>{ if(err){ console.log(err.message) return } console.log('写入指定格式文件成功') })代码执行效果如下:

原文件内容被覆盖。
3.3 写入GBK格式的文件
Node.js仅支持utf8 ucs2 ascii binary base64 hex这几种格式,对于GBK,GB2312等特殊格式需要使用额外的库(这里使用iconv-lite)。
案例:
const iconv = require('iconv-lite') fs.writeFile('./style.css',iconv.encode('面朝大海,春暖花开','gbk'),(err)=>{ if(err){ console.log(err.message) return } console.log("以GBK格式写入成功") })代码执行结果:

注意底部的编码格式,如果使用utf-8打开文件会乱码的呦!
四、fs.appendFile()文件后追加内容
异步地将数据追加到文件,如果该文件尚不存在,则创建该文件。
语法:
fs.appendFile(path, data[, options], callback) /** * path| | | 文件名或文件描述符 * data | * options | * encoding | 默认值: 'utf8' * mode 默认值: 0o666 * flag 请参阅对文件系统 flags 的支持。 默认值: 'a'。 * callback * err */
4.1 使用追加的方式创建并写入内容
fs.appendFile('./test.txt', '测试写入', (err) => { if (err) { console.log(err.message) return } console.log("使用追加的方式创建并写入文件") })代码执行结果:

4.2 追加内容
fs.appendFile('./test.txt', "\n追加测试", (err) => { if (err) { console.log(err.message) return } console.log('在已经存在的文件中追加内容') })代码执行结果:

五、fs.stat()判断路径是目录还是文件
判断路径是文件还是目录。
语法:
fs.stat(path[, options], callback) /** * path| | * options * bigint 返回的 对象中的数值是否应为 bigint。 默认值: false。 * callback * err * stats */
5.1 判断文件案例
判断index.html是文件还是目录。
fs.stat('./index.html',(err,stats)=>{ if(err){ console.log(err.message) return } console.log(`./index.html是文件:${stats.isFile()}`) console.log(`./index.html是目录:${stats.isDirectory()}`) })代码执行效果:

六、fs.readFile()读取文件内容
异步地读取文件的全部内容。
语法:
fs.stat('./index.html',(err,stats)=>{ if(err){ console.log(err.message) return } console.log(`./index.html是文件:${stats.isFile()}`) console.log(`./index.html是目录:${stats.isDirectory()}`) })6.1 以默认格式读取文件
以默认的格式(utf-8)读取文件内容:
fs.readFile('./index.html',(err,data)=>{ if(err){ console.log(err.message) return } console.log(`读取文件成功,文件内容是:\n${data}`) })代码执行结果:

如果要读取的文件不是utf-8格式,就会出现乱码,这时就需要指定读取格式。
6.2 以指定格式(这里是GBK)读取文件
遗憾的是,node.js不支持除了utf8 ucs2 ascii binary base64 hex之外的编码,我们需要使用额外的包(iconv-lite)读取GBK文件:
const iconv = require('iconv-lite') fs.readFile('./index.html',(err,data)=>{ if(err){ console.log(err.message) return } console.log(`读取文件成功,文件内容是:\n${data}`) console.log("读取文件成功,文件内容是:\n",iconv.decode(data,'gbk')) })代码执行结果如下:

七、fs.readdir()读取文件夹中的内容
读取目录的内容。 回调有两个参数 (err, files),其中 files 是目录中文件名的数组,不包括 '.' 和 '..'。
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- JavaScript实现网页版简易计算器功能_javascript技巧_
- js实现计算器和计时器功能_javascript技巧_
- 微信小程序全局配置以及页面配置详解_javascript技巧_
- jQuery实现简易的计算器_jquery_
- React UI组件库之快速实现antd的按需引入和自定义主题_React_
- vuex5中的Pinia插件机制_vue.js_
- jQuery实现简易计算器功能_jquery_
- 微信小程序转换uniapp的迁移步骤以及遇到的问题总结_javascript技巧_
- vue如何实现左右滑动tab(vue-touch)_vue.js_
- jQuery实现简单计算器_jquery_
