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 相关文章推荐
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
Mar 11 Javascript
javascript实现英文首字母大写
Apr 23 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
Nov 17 Javascript
最简单的tab切换实例代码
May 13 Javascript
js和jQuery设置Opacity半透明 兼容IE6
May 24 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
React实现点击删除列表中对应项
Jan 10 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
Aug 21 Javascript
webpack组织模块打包Library的原理及实现
Mar 10 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
React中使用Vditor自定义图片详解
Dec 25 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
php的计数器程序
2006/10/09 PHP
php getsiteurl()函数
2009/09/05 PHP
php printf输出格式使用说明
2010/12/05 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
Python MD5加密实例详解
2017/08/02 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
python中uuid模块实例浅析
2020/12/29 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
德国综合购物网站:OTTO
2018/11/13 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
《守株待兔》教学反思
2014/03/01 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
护理目标管理责任书
2014/07/25 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书