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 相关文章推荐
JavaScript 对象、函数和继承
Jul 07 Javascript
关于js datetime的那点事
Nov 15 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
JavaScript中的this关键字介绍与使用实例
Jun 21 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
JavaScript的类型、值和变量小结
Jul 09 Javascript
详解javascript中的事件处理
Nov 06 Javascript
vue2.0 computed 计算list循环后累加值的实例
Mar 07 Javascript
JS实现可视化文件上传
Sep 08 Javascript
如何在Vue中抽离接口配置文件
Oct 31 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
简单采集了yahoo的一些数据
2007/02/14 PHP
用PHP实现维护文件代码
2007/06/14 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
纯文字版返回顶端的js代码
2013/08/01 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
Python3字符串学习教程
2015/08/20 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
Python3运算符常见用法分析
2020/02/14 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
护理专业毕业生自荐信
2014/06/15 职场文书
安装工程师岗位职责
2015/02/13 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
活动简报范文
2015/07/22 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏