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 相关文章推荐
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
DOM 事件流详解
Jan 20 Javascript
jQuery+html5实现div弹出层并遮罩背景
Apr 15 Javascript
详解JavaScript中的表单验证
Jun 16 Javascript
socket.io学习教程之基本应用(二)
Apr 29 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
微信小程序scroll-x失效的完美解决方法
Jul 18 Javascript
使用D3.js+Vue实现一个简单的柱形图
Aug 05 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
Apr 23 Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
canvas 中如何实现物体的框选
Aug 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迭代器的内部执行过程详解
2013/11/12 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
详解Python3 pickle模块用法
2019/09/16 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
网络教育自我鉴定
2014/02/04 职场文书
竞聘自述材料
2014/08/25 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014个人年度工作总结
2014/12/15 职场文书
行政撤诉申请书
2015/05/18 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
python和anaconda的区别
2022/05/06 Python
ubuntu下常用apt命令介绍
2022/06/05 Servers
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS