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实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
JavaScript CSS修改学习第三章 修改样式表
Feb 19 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
JavaScript中的运算符种类及其规则介绍
Sep 26 Javascript
javascript代码运行不出来执行错误的可能情况整理
Oct 18 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
Aug 18 Javascript
JS中this上下文对象使用方式
Oct 09 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
switchery按钮的使用方法
Dec 18 Javascript
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
Vue中keep-alive组件的深入理解
Aug 23 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数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
浅谈node模块与npm包管理工具
2018/01/03 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
uniapp实现可滑动选项卡
2020/10/21 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
Python实现身份证号码解析
2015/09/01 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
浅析matlab中imadjust函数
2020/02/27 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
本科毕业生专业自荐书范文
2014/02/05 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
森林病虫害防治方案
2014/06/02 职场文书
最美家庭活动方案
2014/08/31 职场文书
2014年售票员工作总结
2014/11/19 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技