Nodejs入门(一)fs模块

编程入门 行业动态 更新时间:2024-10-20 11:27:35

Nodejs入门(一)fs<a href=https://www.elefans.com/category/jswz/34/1771428.html style=模块"/>

Nodejs入门(一)fs模块

目录

一、什么是fs模块?

二、fs文件操作

1、writeFile    异步写入

2、writeFileSync    同步写入

3、appendFile    异步追加写入

4、appendFileSync    同步追加写入

5、createWriteStream    流式写入

6、readFile    异步读取

7、readFileSync    同步读取

8、createReadStream    文件流式读取 

9、rename    文件重命名与移动(异步)

10、renameSync    重命名与移动(同步)

11、unlink    文件删除(异步)

三、fs文件夹操作 

1、mkdir    创建文件夹

2、readdir    读取文件夹

3、rmdir    删除文件夹 

四、查看资源状态 

五、fs实践

1、文件复制

 2、 批量重命名


一、什么是fs模块?

fs(file system)模块是nodejs提供的用于访问本地文件系统的功能模块,它使得运行于nodejs环境下的JavaScript具备直接读写本地文件的能力。

fs模块是nodejs的核心模块之一,只要安装了nodejs,就可以直接使用,不需要单独安装。


二、fs文件操作

1、writeFile    异步写入

一个JS主线程,主线程继续往下走,把磁盘写入交给另外一个线程。

异步的效率比同步的高。

也可以实现追加写入,即把第三个参数设置为{flag:'a'}即可。

//1、导入fs模块
const fs = require('fs');//2、写入文件
fs.writeFile('./座右铭.txt','Talk is cheap,show me code.',err =>{//如果写入失败,则err的值就是一个错误对象//如果写入成功,则err的值为nullif(err){console.log('写入失败');return;}console.log('写入成功');
});
//fs.writeFile(file,data[,options],callback);
//file是文件名,表示你写的数据存放的位置,如果该文件不存在,则自动创建一个文件
//data是待写入的数据
//options是选项设置(可选)
//callback是写入回调

 

 2、writeFileSync    同步写入

//1、导入fs模块
const fs = require('fs');//2、同步写入
fs.writeFileSync('./座右铭1.txt','Nothing is impossible.');

 3、appendFile    异步追加写入

参数和writeFile一样

//1、引入fs模块
const fs = require('fs');//2、调用appendFile
fs.appendFile('./座右铭.txt','一星陨落,暗淡不了星空灿烂',err =>{//判断if(err){console.log('写入失败');return;}console.log('追加写入成功');
});

4、appendFileSync    同步追加写入

//1、引入fs模块
const fs = require('fs');//2、同步追加
fs.appendFileSync('./座右铭1','\r\n一花凋零,荒芜不了整个春天。');
//如果想换行,在追加的文本里面加,\r\n,即可

 5、createWriteStream    流式写入

//1、导入fs
const fs = require('fs');//2、创建写入流对象
const ws=fs.createWriteStream('./观书有感.txt');//就一个参数,文件路径名//3、write
ws.write('关山难越,谁悲失路之人?');
ws.write('萍水相逢,尽是他乡之客。');
ws.write('老当益壮,宁移白首之心?');
ws.write('穷且益坚,不坠青云之志。');//4、关闭通道
ws.close();

 6、readFile    异步读取

//1、引入fs模块
const fs = require('fs');//2、异步读取
fs.readFile('观书有感.txt',(err,data) => {if(err){console.log('读取失败');return;}console.log(data);//打印出来的是十六进制数console.log(data.toString());});
//回调函数中两个参数,err是错误信息,data是文件内容//fs.readFile(path[,options],callback);
//path:文件路径
//options: 选项配置
//callback: 回调函数

 7、readFileSync    同步读取

//1、引入fs模块
const fs = require('fs');//3、同步读取
let data = fs.readFileSync('./观书有感.txt');//只有一个参数
console.log(data);
console.log(data.toString());

8、createReadStream    文件流式读取 

一块一块地读取,每读取完一块,就执行一下回调函数。

//1、引入fs模块
const fs = require('fs');//2、创建读取流对象
const rs = fs.createReadStream('./观书有感.txt');//3、绑定data事件
rs.on('data',chunk =>{console.log(chunk);
});//4、end 可选事件
rs.on('end',() =>{console.log('读取完成');
});

9、rename    文件重命名与移动(异步)

将'座右铭.txt'重命名为'论语.txt'。

//文件重命名//1、导入fs模块
const fs = require('fs');//2、调用rename方法
fs.rename('./座右铭1','./论语.txt',err =>{if(err){console.log('操作失败');return;}console.log('操作成功');
});

 将'观书有感.txt'移动到hello文件夹里

//文件移动//1、导入fs模块
const fs = require('fs');//2、调用rename
fs.rename('./观书有感.txt','../hello/data.txt',err => {if(err){console.log('操作失败');return;}console.log('操作成功');
});

10、renameSync    重命名与移动(同步)

fs.renameSync(oldPath,newPath);

11、unlink    文件删除(异步)

两种方法也都有对应的同步方法

//1、导入fs模块
const fs = require('fs');/2、调用unlink方法
fs.unlink('./观书有感.txt',err => {if(err){console.log('删除失败');return;}console.log('删除成功');
});

nodejs14.4版本引入了一个新的方法,用来删除文件

//1、导入fs模块
const fs = require('fs');//2、调用 rm 方法
fs.rm('./观书有感.txt',err =>{if(err){console.log('删除失败');return;}console.log('删除成功');
});

三、fs文件夹操作 

1、mkdir    创建文件夹

//1、导入fs模块
const fs = require('fs');//2、mkdir
fs.mkdir('./观书有感',err =>{if(err){console.log('创建失败');return;}console.log('创建成功');
});//三个参数,第二个参数是可选配置

递归版

一次性在a文件夹中创建b文件夹,在b文件夹中创建c文件夹

//1、导入fs模块
const fs = require('fs');//2、mkdir
fs.mkdir('./a/b/c',{recursive: true},err =>{if(err){console.log('创建失败');return;}console.log('创建成功');
});

取消vscode文件夹重叠效果:

点开vscode左下角地设置,搜索compact,将第一个选项取消勾选即可。 

 2、readdir    读取文件夹

//1、导入fs模块
const fs = require('fs');//2、readdir
fs.readdir('./观书有感',(err,data) =>{if(err){console.log('读取失败');return;}console.log(data);
});
//返回的是一个数组,里面包含子文件或文件夹的名称

3、rmdir    删除文件夹 

单个的删除

//1、导入fs模块
const fs = require('fs');//2、rmdir
fs.rmdir('./观书有感',err =>{if(err){console.log('删除失败');return;}console.log('删除成功');
});

递归的删除(同时删除其子目录)

//1、导入fs模块
const fs = require('fs');//2、rm
fs.rm('./a',{recursive:true},err =>{if(err){console.log('删除失败');return;}console.log('删除成功');
});

四、查看资源状态 

//1、导入fs模块
const fs = require('fs');//2、调用stat方法
fs.stat('./观书有感.txt',(err,data) =>{if(err){console.log('操作失败');return;}console.log(data);
});

 size:文件的大小

atime:最后一次访问的时间

mtime:最后的修改时间

ctime:最后一次修改文件状态的时间

birthtime:文件的创建时间

检测是不是文件

console.log(data.isFile());

检测是不是文件夹

console.log(data.isDirectory());

五、fs实践

1、文件复制

两种方式,第二种流式操作更好,资源占用更少。

//第一种,用readFile//1、引入fs模块
const fs = require('fs');//2、读取文件内容
let data = fs.readFileSync('./观书有感.txt');//3、写入文件
fs.writeFileSync('./观书有感1.txt',data);
//第二种,用流式操作
//1、引入fs模块
const fs = require('fs');//2、创建读取流对象
const rs = fs.createReadStream('./观书有感.txt');//3、创建写入流对象
const ws = fs.createWriteStream('./观书有感2.txt');//3、绑定data事件
rs.on('data',chunk => {ws.write(chunk);
})

 2、 批量重命名

更多推荐

Nodejs入门(一)fs模块

本文发布于:2024-02-06 17:10:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750374.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模块   入门   Nodejs   fs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!