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下写一个事件队列操作函数
Jul 19 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
JavaScript制作windows经典扫雷小游戏
Mar 31 Javascript
JavaScript实现自动变换表格边框颜色
May 08 Javascript
Javascript的无new构建实例详解
May 15 Javascript
Bootstarp 基础教程之表单部分实例代码
Feb 03 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
vue-cli3.0 环境变量与模式配置方法
Nov 08 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
Vue中实现权限控制的方法示例
Jun 07 Javascript
js实现查询商品案例
Jul 22 Javascript
原生js实现移动小球(碰撞检测)
Dec 17 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
Terran兵种对照表
2020/03/14 星际争霸
基于mysql的bbs设计(五)
2006/10/09 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
ThinkPHP安装和设置
2015/07/27 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
Git命令之分支详解
2021/03/02 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
js比较日期大小的方法
2015/05/12 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
大学生工作求职信
2014/06/23 职场文书
交通志愿者活动总结
2014/06/27 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
利用Python实现Picgo图床工具
2021/11/23 Python
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
JAVA springCloud项目搭建流程
2022/05/11 Java/Android
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python