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实现仿Windows关机效果
Mar 10 Javascript
js bind 函数 使用闭包保存执行上下文
Dec 26 Javascript
JS禁用浏览器退格键实现思路及代码
Oct 29 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
Dec 17 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
Dec 28 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
Jun 01 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
jquery select2的使用心得(推荐)
Dec 04 Javascript
简述JS控制台的使用
Jul 15 Javascript
在angularJs中进行数据遍历的2种方法
Oct 08 Javascript
详解JS实现简单的时分秒倒计时代码
Apr 25 Javascript
详解Vue调用手机相机和相册以及上传
May 05 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初学者(入门学习经验谈)
2010/10/12 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
javascript document.images实例
2008/05/27 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
webpack多页面开发实践
2017/12/18 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
python实现井字棋小游戏
2020/03/04 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
用python计算文件的MD5值
2020/12/23 Python
美国创意之家:BulbHead
2017/07/12 全球购物
高三自我鉴定
2013/10/23 职场文书
大学生个人自荐信
2014/02/24 职场文书
电气自动化求职信
2014/06/24 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
匿名检举信范文
2015/03/02 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python