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 相关文章推荐
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
js window.event对象详尽解析
Feb 17 Javascript
对xmlHttp对象的理解
Jan 17 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
javascript实现焦点滚动图效果 具体方法
Jun 24 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
Nov 17 Javascript
javascript制作照片墙及制作过程中出现的问题
Apr 04 Javascript
AngularJS自定义控件实例详解
Dec 13 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
Vue组件中prop属性使用说明实例代码详解
May 31 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
Sep 05 Javascript
对Layer弹窗使用及返回数据接收的实例详解
Sep 26 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
CI框架安全类Security.php源码分析
2014/11/04 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
PHP echo()函数讲解
2019/02/15 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
文字幻灯片
2006/06/26 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Python面向对象进阶学习
2019/05/21 Python
Python实现对adb命令封装
2020/03/06 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
外语系毕业生求职自荐信
2014/04/12 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书