nodejs核心模块fs删除文件_NodeJs fs(文件系统简单操作)

个人学习记录,仅供参考

文件系统(File System)

文件系统简单来说就是通过Node来操作系统中的文件

使用文件系统,需要先引入fs模块,fs是核心模块,直接引入 不需要下载

const fs = require('fs');

文件写入

同步文件写入

代码逐条执行,会阻塞

操作步骤

打开文件

fs.openSync(path, flags[, mode]);

path 要打开文件的路径

flags 打开文件要做的操作的类型

r 只读的

w 可写的

mode 可选的 设置文件的操作设置权限 一般不会传

返回值:

该方法会返回一个文件的描述符 作为结果 我们可以通过该描述符来对文件的各种操作

向文件中写入内容

fs.writeSync(fd, string[, position[, encoding]]);

fd 文件的描述符 ,需要传递要写入的文件的描述符

string 要写入的内容

position 写入的起始位置 //可选

encoding 写入的编码,默认utf-8 //可选

保存并且关闭文件

fs.closeSync(fd);

fd 要关闭文件的描述符

例子

//引入文件系统

const fs = require('fs');

//打开文件

var fd = fs.openSync('test.txt','w');

//向文件中写入内容

fs.writeSync(fd,'重返十七岁');

//关闭文件

fs.closeSync(fd);

异步文件写入

代码会一起执行不会阻塞

操作步骤

打开文件

fs.open(path, flags[, mode], callback);

异步调用的方法,结果都是通过回调函数的参数返回的

回调函数有两个参数:

err 错误对象 如果没有错误则为 null

fd 文件的描述符

写入文件

fs.write(fd, string[, position[, encoding]], callback);

关闭文件

fs.close(fd, callback);

例子

//引入fs模块

const fs = require('fs');

//打开文件

fs.open('test.txt','w',function (err,fd) {

//判断是否出错

if(!err){

// 写入文件

fs.write(fd,"这是异步写入的内容",function (err) {

if(!err){

console.log('写入成功');

}

//关闭文件

fs.close(fd, function (err) {

if(!err){

console.log("文件已关闭");

}

});

});

}else {

console.log(err);

}

});

简单文件写入

fs.writeFile(file, data[, options], callback);//异步

fs.writeFileSync(file, data[, options]);//同步

file 要操作的文件的路径

data 要写入的数据

options 选项,可以对写入进行一些设置 (可选)

操作符(flag):

r 只读

w 可写

a 追加

callback 回调函数,当我们写入完成以后执行的函数

例子

const fs = require('fs');

fs.writeFile('test.txt','通过writeFile写入的内容',{flag:"a"},function (err) {

if(!err){

console.log("写入成功");

}

});

流式文件写入

同步,异步,简单文件的写入都不适合大文件的写入,性能较差,容易导致内存溢出,而流式文件写入会 一点一点的写入进去 不会导致内存溢出的状况

引入文件系统模块

var fs = require('fs');

创建一个可写流

fs.createWriteStream(path[, options]);

可以创建一个可写流

path 文件路径

options 配置参数

打开文件

var ws = fs.createWriteStream('hello3.txt');

监听流 可选

ws.once("open",function () {

console.log("流打开了");

});

ws.once("close",function () {

console.log("流关闭了");

});

可以通过监听流的open和close事件来监听流的打开和关闭

on(事件字符串,回调函数)

可以为对象绑定一个事件

once(事件字符串,回调函数)

可以为对象绑定一个一次性的事件,该事件将会在出发一次以后自动失效

通过ws向文件中输出内容

ws.write("通过可写流写入文件的内容1");

ws.write("通过可写流写入文件的内容2");

ws.write("通过可写流写入文件的内容3");

ws.write("通过可写流写入文件的内容4");

ws.write("通过可写流写入文件的内容5");

关闭流

ws.end();

文件读取

简单文件读取

fs.readFile(path[, options], callback);

fs.readFileSync(path[, options]);

path 要读取文件的路径

options 读取的选项

callback 回调函数 通过回调函数将读取到的内容返回

err 错误对象

data 读取到的数据 会返回一个buffer

例子

var fs = require('fs');

fs.readFile('0.jpg',function (err,data) {

if (!err) {

// console.log(data);

//将data写入文件中

fs.writeFile('hello.jpg',data,function (err) {

if(!err){

console.log("文件写入成功");

}

})

}

});

流式文件读取

流式文件读取也适用于一些比较大的文件,可以分多次将文件读取到内存中

绑定方法

例子

var fs = require('fs');

// 创建一个可读流

var rs = fs.createReadStream('0.jpg');

//创建一个可写流

var ws = fs.createWriteStream('test.jpg')

// 监听流的开启和关闭

rs.once('open',function () {

console.log("可读流打开了");

});

rs.once('close',function () {

console.log("可读流关闭了");

//数据读取完毕,关闭可写流

ws.end();

});

ws.once('open',function () {

console.log("可写流打开了");

});

ws.once('close',function () {

console.log("可写流关闭了");

});

// 如果要读取可读流中的数据,必须要为可读流绑定一个data事件,data事件绑定完毕,他会自动开始读取数据

rs.on("data",function (data) {

// console.log(data.length);

//将读取到的数据写入到可写流中

ws.write(data);

});

pipe方法

var fs = require('fs');

// 创建一个可读流

var rs = fs.createReadStream('0.jpg');

//创建一个可写流

var ws = fs.createWriteStream('test.jpg')

// 监听流的开启和关闭

rs.once('open',function () {

console.log("可读流打开了");

});

rs.once('close',function () {

console.log("可读流关闭了");

});

ws.once('open',function () {

console.log("可写流打开了");

});

ws.once('close',function () {

console.log("可写流关闭了");

});

//pipe 可以将可读流中的内容,直接输出到可写流里面

rs.pipe(ws);

常用方法

检查一个文件是否存在

fs.existsSync(path);

例子

var isExists = fs.existsSync('test.jpg');

console.log(isExists);

获取文件状态

fs.stat(path[, options], callback)

fs.statSync(path[, options])

它会返回一个对象,这个对象中保存了当前对象状态的相关信息

例子 官网

fs.stat('test.jpg',function (err,stats) {

/**

* size 文件的大小

* isFile() 是否 是一个文件

* isDirectory() 是否 是一个文件夹(目录)

*/

if(!err){

console.log(stats.isDirectory() );

}

});

删除文件

fs.unlink(path, callback)

fs.unlinkSync(path)

例子

fs.unlinkSync("test.jpg");

读取一个目录的目录结构

fs.readdir(path[, options], callback)

fs.readdirSync(path[, options])

files 是一个字符串数组,每一个元素就是一个文件夹或文件的名字

例子

fs.readdir('.',function (err,files) {

if(!err){

console.log(files);

}

});

截断文件

fs.truncate(path[, len], callback)

fs.truncateSync(path[, len])

将文件修改为指定的大小

例子

fs.truncateSync('test.txt',10);

创建一个文件夹(目录)

fs.mkdir(path[, mode], callback)

fs.mkdirSync(path[, mode])

例子

fs.mkdirSync("test");

删除一个目录

fs.rmdir(path, callback)

fs.rmdirSync(path)

例子

fs.rmdirSync("test");

重命名文件夹

fs.rename(oldPath, newPath, callback)

fs.renameSync(oldPath, newPath)

参数

oldPath 旧的路径

newPath 新的路径

callback 回调函数

例子

fs.rename('test1.jpg','test2.jpg',function (err) {

if (!err) {

console.log('修改成功');

}

});

监视文件的修改

fs.watchFile(filename[, options], listener)

参数

filename 要监视的文件名字

options 配置选项

官网默认5s 可调 interval

listener 回调函数 当文件发生变化时 回调函数会执行

在回调函数中有两个参数

curr 当前文件的状态

prev 修改前文件的状态

这两个对象都是 stats对象

例子 官网

fs.watchFile('test.txt',{interval:1000},function (curr, prev) {

console.log("修改前文件大小==>"+prev.size);

console.log("修改后文件大小==>"+curr.size);

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值