node.js中的fs.read方法使用说明


Posted in Javascript onDecember 17, 2014

方法说明:

根据指定的文件描述符fd来读取文件数据并写入buffer指向的缓冲区对象。相对于readFile提供了更底层的接口。

一般情况下不建议使用这种方式来读取文件,因为它要求你手动管理缓冲区和文件指针,尤其是在 你不知道文件大小的时候,这将会是一件很麻烦的事情。

语法:

fs.read(fd,buffer,offset,length,position,[callback(err,bytesRead,buffer)])

由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) )

接收参数:

fs             文件描述符

buffer      缓冲区,数据将被写入。

offset      buffer写入的偏移量

length     (integer)   指定文件读取字节数长度

position   (integer)   指定文件读取的起始位置,如果该项为null,将从当前文件指针的位置开始读取数据。

callback      回调传递了三个参数,err, bytesRead, buffer

· err  异常

· bytesRead:读取的字节数

· buffer:缓冲区对象

例子:

var fs = require('fs');

fs.open('123.txt' , 'r' , function (err,fd){ 

 if(err){ 

  console.error(err); 

  return; 

 } 

 

 var buf = new Buffer(8); 

 fs.read(fd, buf, 0, 8, null, function(err,bytesRead, buffer){ 

  if(err){ 

   console.log(err); 

   return; 

  } 

  console.log('bytesRead' +bytesRead); 

  console.log(buffer); 

 }) 

})

源码:

fs.read = function(fd, buffer, offset, length, position, callback) {

  if (!util.isBuffer(buffer)) {

    // legacy string interface (fd, length, position, encoding, callback)

    var cb = arguments[4],

        encoding = arguments[3];

    assertEncoding(encoding);

    position = arguments[2];

    length = arguments[1];

    buffer = new Buffer(length);

    offset = 0;

    callback = function(err, bytesRead) {

      if (!cb) return;

      var str = (bytesRead > 0) ? buffer.toString(encoding, 0, bytesRead) : '';

      (cb)(err, str, bytesRead);

    };

  }

  function wrapper(err, bytesRead) {

    // Retain a reference to buffer so that it can't be GC'ed too soon.

    callback && callback(err, bytesRead || 0, buffer);

  }

  binding.read(fd, buffer, offset, length, position, wrapper);

};
Javascript 相关文章推荐
js textarea自动增高并隐藏滚动条
Dec 16 Javascript
Jquery Select操作方法集合脚本之家特别版
May 17 Javascript
JQuery 动态扩展对象之另类视角
May 25 Javascript
JS将秒换成时分秒实现代码
Sep 03 Javascript
Bootstrap模态框调用功能实现方法
Sep 19 Javascript
详解Angular5 服务端渲染实战
Jan 04 Javascript
使用classList来实现两个按钮样式的切换方法
Jan 24 Javascript
Javascript 编码约定(编码规范)
Mar 11 Javascript
微信小程序实现下拉菜单切换效果
Mar 30 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
Sep 25 Javascript
详解js中的原型,原型对象,原型链
Jul 16 Javascript
JavaScript 防盗链的原理以及破解方法
Dec 29 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 #Javascript
node.js中的fs.mkdir方法使用说明
Dec 17 #Javascript
使用FlexiGrid实现Extjs表格效果方法分享
Dec 16 #Javascript
jQuery+css实现百度百科的页面导航效果
Dec 16 #Javascript
jQuery+PHP打造滑动开关效果
Dec 16 #Javascript
javascript进行四舍五入方法汇总
Dec 16 #Javascript
javascript 判断整数方法分享
Dec 16 #Javascript
You might like
JS 自定义带默认值的函数
2011/07/21 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
Vue自定义指令详解
2017/07/28 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python程序文件扩展名知识点详解
2020/02/27 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
Python使用Pygame绘制时钟
2020/11/29 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
剪彩仪式主持词
2014/03/19 职场文书
保险公司晨会主持词
2014/03/22 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
2014年评职称工作总结
2014/11/20 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
地道战观后感400字
2015/06/04 职场文书
电台广播稿范文
2015/08/19 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
Java版 简易五子棋小游戏
2022/05/04 Java/Android