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 相关文章推荐
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
Feb 05 Javascript
javascript实现状态栏中文字动态显示的方法
Oct 20 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
jquery datatable服务端分页
Aug 31 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
Node.js创建HTTP文件服务器的使用示例
May 11 Javascript
最简单的JS实现json转csv的方法
Jan 10 Javascript
关于vue状态过渡transition不起作用的原因解决
Apr 09 Javascript
vue登录页面cookie的使用及页面跳转代码
Jul 10 Javascript
Vue 数据绑定的原理分析
Nov 16 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+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
使用PDB模式调试Python程序介绍
2015/04/05 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python读写LMDB文件的方法
2018/07/02 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
python pillow库的基础使用教程
2021/01/13 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
七年级数学教学反思
2014/01/22 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
入党介绍人评语
2014/05/06 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
2014年教师节寄语
2014/08/11 职场文书
工程部经理岗位职责
2015/02/02 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
PHP 时间处理类Carbon
2022/05/20 PHP