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 相关文章推荐
js实现的切换面板实例代码
Jun 17 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
Mar 20 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
Nov 12 Javascript
JavaScript+html5 canvas实现本地截图教程
Apr 16 Javascript
值得分享和收藏的Bootstrap学习教程
May 12 Javascript
JavaScript中的高级函数
Jan 04 Javascript
在Vue 中使用Typescript的示例代码
Sep 10 Javascript
对TypeScript库进行单元测试的方法
Jul 18 Javascript
JS防抖和节流实例解析
Sep 24 Javascript
使用axios请求时,发送formData请求的示例
Oct 29 Javascript
基于VSCode调试网页JavaScript代码过程详解
Jul 20 Javascript
关于小程序优化的一些建议(小结)
Dec 10 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
一个取得文件扩展名的函数
2006/10/09 PHP
实用函数9
2007/11/08 PHP
twig模板常用语句实例小结
2016/02/04 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
JS实现轮播图效果
2020/01/11 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python configparser模块常用方法解析
2020/05/22 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
初中作文评语大全
2014/04/23 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
明确岗位职责
2015/02/14 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
防暑降温通知书
2015/04/27 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript