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同步Import,同步调用外部js的方法
Jul 08 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
Mar 03 Javascript
js实现漂浮回顶部按钮实例
May 06 Javascript
详解JavaScript中localStorage使用要点
Jan 13 Javascript
Bootstrap表单使用方法详解
Feb 17 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
Three.js实现浏览器变动时进行自适应的方法
Sep 26 Javascript
switchery按钮的使用方法
Dec 18 Javascript
js基础之事件捕获与冒泡原理
Oct 09 Javascript
layui实现数据表格隐藏列的示例
Oct 25 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 Javascript
Vertx基于EventBus发送接受自定义对象
Nov 16 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
Python help()函数用法详解
2014/03/11 Python
Python写的贪吃蛇游戏例子
2014/06/16 Python
python3编码问题汇总
2016/09/06 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
python tornado微信开发入门代码
2018/08/24 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python实现数据分析与建模
2019/07/11 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
写自荐信的七个技巧
2013/10/15 职场文书
领导视察欢迎词
2014/01/15 职场文书
班级年度安全计划书
2014/05/01 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
大雁塔导游词
2015/02/04 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
导游词之崇武古城
2019/10/07 职场文书
Python获取字典中某个key的value
2022/04/13 Python