二十六、深入Node.js中的文件系统fs模块
@Author:Runsen
@Date:2020/6/8
人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难,奋勇前行,不忘初心,砥砺前行,人生定会有所收获,不留遗憾 (作者:Runsen )
作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间,都在CSDN。决定今天比昨天要更加努力。
我预计写前端写到五十多篇,慢慢来,才能不断地成长
这次我决定写入Node.js中的文件系统fs模块。搞起来,不对是让我们hi起来。
fs模块
嗨之前,我先去菜鸡教程看看,你也可以点一下下面的链接。
fs模块是内置的模块,Node.js 直接使用require关键字加载这个模块,并把它赋值给一个变量。这样就可以调用模块暴露的任何方法了。
就是这么简单。
var fs = require("fs");
- 1
Node.js 文件系统(fs 模块)模块中的方法有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。有 Sync 后缀为同步方法,反之则为异步方法。
区别就是,同步方法在程序继续执行之前需要等待同步方法执行完毕返回结果;异步方法则在被调用之后立即返回,以便程序在被调用方法完成其他任务的同时执行其它操作,往往通过回调函数处理异步调用的结果。
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。(来源:菜鸟教程)
文件权限
文件权限表:
在上图中,我们可以看出系统中针对三种类型进行权限分配,即文件所有者(自己)、文件所属组(家人)和其他用户(陌生人),文件操作权限又分为三种,读、写和执行,数字表示为八进制数,具备权限的八进制数分别为 4、2、1,不具备权限为 0。
因此6就是读和写,7就是所有权限。
读取文件
下面代码来源:菜鸟教程
示例:
假设有如下文件test.txt:
Runsen嗨起来,学互联网工作技能,以后就是不去化工厂
化工没前途,坑人专业
- 1
- 2
同步读取文件
synchronization.js内容如下:
var fs = require("fs");
var data = fs.readFileSync('test.txt');
//读取结果是二进制,要转化成我们认识的
console.log("同步读取文件内容为:\n" + data.toString());
console.log("程序执行完毕");
- 1
- 2
- 3
- 4
- 5
启动文件:
>node synchronization.js
同步读取文件内容为:
Runsen嗨起来,学互联网工作技能,以后就是不去化工厂
化工没前途,坑人专业
- 1
- 2
- 3
- 4
异步读取文件
asynchronous.js内容如下:
var fs = require("fs")
fs.readFile('test.txt', function(err,data){ if(err){ return console.error(err); } console.log("异步读取文件内容为:\n"+data.toString());
});
console.log("程序执行完毕");
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
启动文件:
>node asynchronous.js
异步读取文件内容为:
Runsen嗨起来,学互联网工作技能,以后就是不去化工厂
化工没前途,坑人专业
- 1
- 2
- 3
- 4
文件写入
下面都是用异步的,毕竟同步没必要学习。
异步模式下写入文件的语法为:
fs.writeFile(file, data[, options], callback)
- 1
- file – 文件名或文件描述符
- data – 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象
- options – 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为utf8,模式为 0666,flag为’w’
- callback – 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回
var fs = require("fs");
console.log("准备写入文件");
fs.writeFile('write.txt', '化工没前途,坑人专业', function(err){ if (err) { return console.error(err); } console.log("数据写入成功!");
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
启动文件,write.txt中成功被写内容:
> node writefile.js
准备写入文件
数据写入成功!
- 1
- 2
- 3
文件夹创建
//文件夹创建
//1 -- 执行 2 -- 写入 4 -- 读取 7=1+2+4 权限:创建的文件夹可执行可读可写
fs.mkdir("img",0777,function (err) { if(err){ console.log(err); }else { console.log("创建成功"); }
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
文件删除
//删除文件
fs.unlink("write.txt",function (err) { if(err){ return console.log(err); }else { console.log("删除成功"); }
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
拷贝文件
fs.copyFile(filenameA, filenameB,callback)
- 1
- 2
第一个参数原始文件名
第二个参数要拷贝到的文件名
fs.copyFileSync('test.txt', 'test1.txt');
var data = fs.readFile('test1.txt', 'utf8');
console.log(data); Runsen嗨起来,学互联网工作技能,以后就是不去化工厂
化工没前途,坑人专业
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
如果本文对你有帮助,大家可以点赞转发一波,有错误大家可以评论指出,感谢!
大家继续加油,未来可期!Runsen的征途是星辰大海!
文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。
原文链接:maoli.blog.csdn.net/article/details/106625884
- 点赞
- 收藏
- 关注作者
评论(0)