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的值为null
    if(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、 批量重命名

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼哥myg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值