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 相关文章推荐
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
关于include标签导致js路径找不到的问题分析及解决
Jul 09 Javascript
JavaScript实现多维数组的方法
Nov 20 Javascript
jquery对单选框,多选框,文本框等常见操作小结
Jan 08 Javascript
Node.js实现的简易网页抓取功能示例
Dec 05 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
Nov 01 Javascript
Vue-router 类似Vuex实现组件化开发的示例
Sep 15 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
Vue+element-ui 实现表格的分页功能示例
Aug 18 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
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
PHP fclose函数用法总结
2019/02/15 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
python实现下载文件的三种方法
2017/02/09 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
在python中安装basemap的教程
2018/09/20 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
python实现简单坦克大战
2020/03/27 Python
python复合条件下的字典排序
2020/12/18 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
七年级生物教学反思
2014/01/30 职场文书
质量月口号
2014/06/20 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
签约仪式致辞
2015/07/30 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
Python中super().__init__()测试以及理解
2021/12/06 Python