Node.js中文件操作模块File System的详细介绍


Posted in Javascript onJanuary 05, 2017

File System的缩写是fs,该模块提供本地文件的读写能力。

Nodejs导入文件系统模块(fs)语法如下所示:

var fs = require("fs");

异步和同步

Node.js文件系统(fs模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync()

异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。同步则没有回调函数。

建议大家是用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。

打开文件

语法如下:

fs.open(path,flags[,mode],[callback(err,data)]);//异步

     path - 文件的路径。

     mode - 设置文件模式(权限),文件创建默认权限为0666(可读,可写)。

     callback - 回调函数,带有两个参数如:callback(err,fd)

     flags - 文件打开的行为。具体如下:

flag description
r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 ‘w',但是如果文件路径存在,则文件写入失败。
w+ 类似 ‘w+', 但是如果文件路径存在,则文件读写失败。
wx+ 类似 ‘w+', 但是如果文件路径存在,则文件读写失败。
以追加模式打开文件,如果文件不存在则创建。
ax 类似 ‘a', 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 ‘a+', 但是如果文件路径存在,则文件读取追加失败。

获取文件信息

语法如下:

fs.stat(path,[callback(err,stats)]);//异步

fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性。

stats类中的方法有:

方法 描述
stats.isFile() 如果是文件返回 true,否则返回 false。
stats.isDirectory() 如果是目录返回 true,否则返回 false。
stats.isBlockDevice()  如果是块设备返回 true,否则返回 false。
stats.isCharacterDevice() 如果是字符设备返回 true,否则返回 false。
stats.isSymbolicLink() 如果是软链接返回 true,否则返回 false。
stats.isFIFO()  如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
stats.isSocket()  如果是 Socket 返回 true,否则返回 false。

写入文件

语法如下:

fs.writeFile(filename,data[,options],[callback]);//异步
fs.writeFileSync(filename,data); //同步

如果文件存在,该方法写入的内容会覆盖旧的文件内容。

     data -要写入文件的数据,可以是String(字符串)或Buffer(流)对象。

     options - 该参数是一个对象,包含{encoding,mode,flag}。默认编码为utf8,模式为0666,flag为'w';

追加内容

语法如下:

fs.appendFile(filename,data[,options],[callback]);//同步
fs.appendFileSync(filename,data[,options]); //同步

读取文件

语法如下:

fs.read(fd,buffer,offset,length,position,[callback]);//异步
var buf = fs.readFile(filename,[encoding],[callback(err,data)]);//异步读取
var buf = fs.readFileSync(filename,[encoding]);//同步读取

     fd - 通过 fs.open() 方法返回的文件描述符。

     buffer - 数据写入的缓冲区。

     offset - 缓冲区写入的写入偏移量。

     length - 要从文件中读取的字节数。

     position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。

     encoding,编码格式,该项是可选的。

关闭文件

语法如下:

fs.close(fd,callback);//异步

      fd - 通过 fs.open() 方法返回的文件描述符。

截取文件

语法如下:

fs.ftruncate(fd,len,callback);//异步

      fd - 通过 fs.open() 方法返回的文件描述符。

      len - 文件内容截取的长度。

删除文件

语法如下:

fs.unlink(path,callback);

创建目录

语法如下:

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

mode - 设置目录权限,默认为 0777。

读取目录

语法如下:

fs.readdir(path,callback);

删除目录

语法如下:

fs.rmdir(path,callback);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
Jul 20 Javascript
JS的千分位算法实现思路
Jul 31 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
Aug 13 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
javascript实现切换td中的值
Dec 05 Javascript
js获取微信版本号的方法
May 12 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
Vue动画事件详解及过渡动画实例
Feb 09 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 Javascript
Rust中的Struct使用示例详解
Aug 14 Javascript
Extjs让combobox写起来简洁又漂亮
Jan 05 #Javascript
JS实现给对象动态添加属性的方法
Jan 05 #Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 #Javascript
JavaScript实现数组降维详解
Jan 05 #Javascript
jQuery解析返回的xml和json方法详解
Jan 05 #Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 #Javascript
jQuery实现动态文字搜索功能
Jan 05 #Javascript
You might like
PHP常用函数总结(180多个)
2016/12/25 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
JavaScript 创建对象
2009/07/17 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
js实现仿百度瀑布流的方法
2015/02/05 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
Python 流程控制实例代码
2009/09/25 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python中的模块和包概念介绍
2015/04/13 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
教师自我评价范例
2013/09/24 职场文书
新学期开学寄语
2014/01/18 职场文书
战友聚会邀请函
2014/01/18 职场文书
岗位职责的构建方法
2014/02/01 职场文书
清明节演讲稿
2014/05/27 职场文书
营业用房租赁协议书
2014/11/26 职场文书
史上最牛的辞职信
2015/02/28 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript