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 DOM学习第八章 表单错误提示
Feb 19 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
JS实现让访问者自助选择网页文字颜色的方法
Feb 24 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
Mar 31 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
JS封装的选项卡TAB切换效果示例
Sep 20 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
jQuery内存泄露解决办法
Dec 13 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
JS算法题之查找数字在数组中的索引位置
May 15 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
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和ACCESS写聊天室(十)
2006/10/09 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
学习python (1)
2006/10/31 Python
Python版的文曲星猜数字游戏代码
2013/09/02 Python
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Python正则表达式使用经典实例
2016/06/21 Python
Python中最大递归深度值的探讨
2019/03/05 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
Python ATM功能实现代码实例
2020/03/19 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
工商管理专业职业生涯规划
2014/01/01 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
人民的好儿女观后感
2015/06/18 职场文书
借钱欠条怎么写
2015/07/03 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA