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 相关文章推荐
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
JS+CSS实现DIV层的展开、收缩效果
Jan 28 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
Oct 12 Javascript
解决前端跨域问题方案汇总
Nov 20 Javascript
JS匿名函数实例分析
Nov 26 Javascript
jQuery实现简易的输入框字数计数功能示例
Jan 16 Javascript
对于input 框限定输入值为浮点型的js代码
Sep 25 Javascript
Angular4自制一个市县二级联动组件示例
Nov 21 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
Vue-router 切换组件页面时进入进出动画方法
Sep 01 Javascript
更强大的vue ssr实现预取数据的方式
Jul 19 Javascript
layui表格 返回的数据状态异常的解决方法
Sep 10 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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
php删除文本文件中重复行的方法
2015/04/28 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
webpack 代码分离优化快速指北
2019/05/18 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
python 实现dict转json并保存文件
2019/12/05 Python
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
技术总监的工作职责
2013/11/13 职场文书
总经理秘书的岗位职责
2013/12/27 职场文书
学生会离职感言
2014/02/11 职场文书
关爱留守儿童标语
2014/06/18 职场文书
大学生暑期实践报告
2015/07/13 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js