二十六、深入Node.js中的文件系统fs模块

举报
毛利 发表于 2021/07/15 04:37:37 2021/07/15
【摘要】 @Author:Runsen @Date:2020/6/8 人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难,奋勇前行,不忘初心,砥砺前行,人生定会有所收获,不留遗憾 (作者:Runsen ) 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语...

@Author:Runsen
@Date:2020/6/8

人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难,奋勇前行,不忘初心,砥砺前行,人生定会有所收获,不留遗憾 (作者:Runsen )

作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间,都在CSDN。决定今天比昨天要更加努力。

我预计写前端写到五十多篇,慢慢来,才能不断地成长

这次我决定写入Node.js中的文件系统fs模块。搞起来,不对是让我们hi起来。

fs模块

嗨之前,我先去菜鸡教程看看,你也可以点一下下面的链接。

菜鸡教程中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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。