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中的数学函数集合
May 08 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
Jun 27 Javascript
调试代码导致IE出错的避免方法
Apr 04 Javascript
JavaScript实现网页对象拖放功能的方法
Apr 15 Javascript
仅30行代码实现Javascript中的MVC
Feb 15 Javascript
bootstrap模态框垂直居中效果
Dec 03 Javascript
详解Angular4中路由Router类的跳转navigate
Jun 09 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
Apr 22 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
一些你可能不熟悉的JS知识点总结
Mar 15 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/06 新手入门
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
详解php实现页面静态化原理
2017/06/21 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
javascript与CSS复习(二)
2010/06/29 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
vant实现购物车功能
2020/06/29 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python插入排序算法的实现代码
2013/11/21 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
Python3.8中使用f-strings调试
2019/05/22 Python
简单分析python的类变量、实例变量
2019/08/23 Python
python实现静态web服务器
2019/09/03 Python
python 导入数据及作图的实现
2019/12/03 Python
python中property和setter装饰器用法
2019/12/19 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
Python多线程获取返回值代码实例
2020/02/17 Python
Python如何给你的程序做性能测试
2020/07/29 Python
浅析python中的del用法
2020/09/02 Python
python 决策树算法的实现
2020/10/09 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
销售员试用期自我评价
2014/09/15 职场文书
卖房协议书样本
2014/10/30 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书