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 日期对象Date扩展方法
May 30 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
Dec 22 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
js仿淘宝商品放大预览功能
Mar 15 Javascript
深入理解Angular4订阅(Subscribe)与取消
Nov 22 Javascript
vue内置组件transition简单原理图文详解(小结)
Jul 12 Javascript
小程序实现搜索框功能
Mar 26 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
JavaScript通如何过RGraph实现动态仪表盘
Oct 15 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
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
ExpressJS入门实例
2015/01/14 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
Python实现简单的语音识别系统
2017/12/13 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
浅谈Django的缓存机制
2018/08/23 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
校园安全教育广播稿
2014/02/17 职场文书
初三开学计划书
2014/04/27 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
关于感恩的作文
2019/08/26 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL