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打印网页部分内容的脚本
Nov 17 Javascript
浅析JavaScript事件和方法
Feb 28 Javascript
PageSwitch插件实现100种不同图片切换效果
Jul 28 Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 Javascript
JavaScript实现经典排序算法之冒泡排序
Dec 28 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
bmob js-sdk 在vue中的使用教程
Jan 21 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 Javascript
js键盘事件实现人物的行走
Jan 17 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 Javascript
浅谈JavaScript中的“!!”作用
Aug 03 Javascript
vue组件实现移动端九宫格转盘抽奖
Oct 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
php生成图片验证码的方法
2016/04/15 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
Python 实现一个简单的web服务器
2021/01/03 Python
django使用多个数据库的方法实例
2021/03/04 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
小学生家长寄语
2014/04/02 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
党员年度个人总结
2015/02/14 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技