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客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
jQuery图片预加载 等比缩放实现代码
Oct 04 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
JQuery中extend使用介绍
Mar 13 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
JavaScript编程中的Promise使用大全
Jul 28 Javascript
mui back 返回刷新页面的实例
Dec 06 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
JavaScript实现两个数组的交集
Mar 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
理解javascript封装
2016/02/23 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
Python运算符重载用法实例
2015/05/28 Python
利用python批量检查网站的可用性
2016/09/09 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
python实现录音小程序
2020/10/26 Python
python 自定义对象的打印方法
2019/01/12 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Python帮你识破双11的套路
2019/11/11 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
几个SQL的面试题
2014/03/08 面试题
小型女装店的创业计划书
2014/01/09 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
岗位职责怎么写
2014/03/14 职场文书
土建施工员岗位职责
2014/07/16 职场文书
认错检讨书
2014/10/02 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
利用python做数据拟合详情
2021/11/17 Python