node.js中的fs.write方法使用说明


Posted in Javascript onDecember 15, 2014

方法说明:

写入文件(根据文件描述符),功能与 fs.writeFile() 类似,但该方法提供更底层的操作,实际应用中建议使用多 fs.writeFile()  。

该方法有两种形式:

1、fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)])

这种写法将buffer写入文件(根据文件描述符fd来查找文件)。

2、fs.write(fd, data[, position[, encoding]], [callback(err, written, string)])

这种写法将数据data写入文件(根据文件描述符fd来查找文件)。如果数据不是一个缓冲区的实例值将被强制转换为一个字符串。

语法:

fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)])
fs.write(fd, data[, position[, encoding]], [callback(err, written, string)])

由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) )

接收参数:

fd     文件描述符。

buffer      缓冲区,数据将被写入。buffer尺寸的大小设置最好是8的倍数,效率较高。

offset      buffer写入的偏移量

length     (integer)   指定文件读取字节数长度

position   (integer)   指定文件读取的起始位置,如果该项为null,将从当前文件指针的位置开始读取数据。

callback      回调传递了三个参数,err, bytesRead, buffer

· err  异常

· bytesRead:读取的字节数

· buffer:缓冲区对象

第二种形式:

encoding     字符编码

callback

· err            异常

· written     指定多少字符数将被写入到文件。

· string       返回的Buffer

例子:

//fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)])

//执行结果:bytesWritten = 8 , buffer = <Buffer 00 00 00 01 00 00 00 00>

 

var fs = require('fs');

fs.open('content.txt', 'a', function(err,fd){

 if(err){

  throw err;

 }

 var data = '123123123 hello world';

 var buf = new Buffer(8);

 fs.write(fd, buf, 0, 8, 0, function(err, bytesWritten, buffer){

  if(err){

   throw err;

  }

  console.log(bytesWritten);

  console.log(buffer);

 

  fs.close(fd,function(err){

   if(err){

    throw err;

   }

   console.log('file closed');

  })

 })

})

 

//fs.write(fd, data[, position[, encoding]], [callback(err, written, string)])

//执行结果:written = 21 , string = <Buffer 31 32 33 31 32 33 31 32 33 20 68 65 6c 6c 6f 20 77 bf 72 6c 64>

var fs = require('fs');

fs.open('content.txt', 'a', function(err,fd){

 if(err){

  throw err;

 }

 var data = '123123123 hello world';

 fs.write(fd, data, 0 , 'utf-8', function(err, written, string){

  if(err){

   throw err;

  }

  console.log(written);

  console.log(string);

 

  fs.close(fd,function(err){

   if(err){

    throw err;

   }

   console.log('file closed');

  })

 })

})

源码:

// usage:

// fs.write(fd, buffer, offset, length[, position], callback);

// OR

// fs.write(fd, string[, position[, encoding]], callback);

fs.write = function(fd, buffer, offset, length, position, callback) {

  if (util.isBuffer(buffer)) {

    // if no position is passed then assume null

    if (util.isFunction(position)) {

      callback = position;

      position = null;

    }

    callback = maybeCallback(callback);

    var wrapper = function(err, written) {

      // Retain a reference to buffer so that it can't be GC'ed too soon.

      callback(err, written || 0, buffer);

    };

    return binding.writeBuffer(fd, buffer, offset, length, position, wrapper);

  }

  if (util.isString(buffer))

    buffer += '';

  if (!util.isFunction(position)) {

    if (util.isFunction(offset)) {

      position = offset;

      offset = null;

    } else {

      position = length;

    }

    length = 'utf8';

  }

  callback = maybeCallback(position);

  position = function(err, written) {

    // retain reference to string in case it's external

    callback(err, written || 0, buffer);

  };

  return binding.writeString(fd, buffer, offset, length, position);

};
Javascript 相关文章推荐
javascript实现划词标记+划词搜索功能
Mar 06 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
Sep 29 Javascript
js实现点小图看大图效果的思路及示例代码
Oct 28 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
Mar 03 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
BootStrap组件之进度条的基本用法
Jan 19 Javascript
基于js中document.cookie全面解析
Sep 14 Javascript
vue基于mint-ui实现城市选择三级联动
Jun 30 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
three.js 制作动态二维码的示例代码
Jul 31 Javascript
JS数组转字符串实现方法解析
Sep 04 Javascript
node.js中的http.createClient方法使用说明
Dec 15 #Javascript
node.js中的http.get方法使用说明
Dec 14 #Javascript
node.js中的http.createServer方法使用说明
Dec 14 #Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 #Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 #Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 #Javascript
node.js中的http.response.addTrailers方法使用说明
Dec 14 #Javascript
You might like
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
php使用正则验证中文
2016/04/06 PHP
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python Numpy,mask图像的生成详解
2020/02/19 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
Python-split()函数实例用法讲解
2020/12/18 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
Jar包的作用是什么
2014/03/30 面试题
求职简历中个人的自我评价
2013/12/25 职场文书
护士进修自我鉴定
2014/02/07 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
服务承诺口号
2014/05/22 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
共青团员自我评价范文
2014/09/14 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
小学三年级作文之写景
2019/11/05 职场文书