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 相关文章推荐
跨浏览器的设置innerHTML方法
Sep 18 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
Dec 19 Javascript
jQuery登陆判断简单实现代码
Apr 21 Javascript
JavaScript自动设置IFrame高度的小例子
Jun 08 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
Vue 过滤器filters及基本用法
Dec 26 Javascript
jquery实现楼层滚动效果
Jan 01 jQuery
基于vue实现网站前台的权限管理(前后端分离实践)
Jan 13 Javascript
Electron-vue开发的客户端支付收款工具的实现
May 24 Javascript
layer 关闭指定弹出层的例子
Sep 25 Javascript
JS运算符优先级与表达式示例详解
Sep 04 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 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
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
将python图片转为二进制文本的实例
2019/01/24 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
python利用platform模块获取系统信息
2020/10/09 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
全国文明单位申报材料
2014/05/31 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis