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学习笔记[1] jQuery中的DOM操作
Dec 03 Javascript
JQuery中getJSON的使用方法
Dec 13 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
jQuery操作checkbox选择(list/table)
Apr 07 Javascript
JS获取select-option-text_value的方法
Dec 26 Javascript
纯css+js写的一个简单的tab标签页带样式
Jan 28 Javascript
javascript内置对象操作详解
Feb 04 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
vue组件实例解析
Jan 10 Javascript
vue脚手架搭建过程图解
Jun 06 Javascript
在Vue methods中调用filters里的过滤器实例
Aug 30 Javascript
Vue的click事件防抖和节流处理详解
Nov 13 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/06/19 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
微信支付开发交易通知实例
2016/07/12 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
python 连接各类主流数据库的实例代码
2018/01/30 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
keras K.function获取某层的输出操作
2020/06/29 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
捐书寄语赠言
2014/01/18 职场文书
个人合作协议书范本
2014/04/18 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
大学生求职计划书
2014/04/30 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
信用卡工作证明范本
2015/06/19 职场文书
追讨欠款律师函
2015/06/24 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
企业财务管理制度范本
2015/08/04 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang