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 相关文章推荐
jquery tools 系列 scrollable(2)
Sep 06 Javascript
javascript检测页面是否缩放的小例子
May 16 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
Feb 07 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
Jan 12 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
基于es6三点运算符的使用方法(实例讲解)
Oct 12 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
Apr 23 Javascript
layui 给数据表格加序号的方法
Aug 20 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
preg_match_all使用心得分享
2014/01/31 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
用python 制作图片转pdf工具
2015/01/30 Python
基于python socketserver框架全面解析
2017/09/21 Python
详解K-means算法在Python中的实现
2017/12/05 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
举例讲解Python常用模块
2019/03/08 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Python-opencv 双线性插值实例
2020/01/17 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
迟到检讨书300字
2014/02/14 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
Java线程的6种状态与生命周期
2022/05/11 Java/Android