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小问题说明
Sep 26 Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
js随机颜色代码的多种实现方式
Apr 23 Javascript
javascript事件冒泡详解和捕获、阻止方法
Apr 12 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
JavaScript String 对象常用方法总结
Apr 28 Javascript
jQuery中DOM节点的删除方法总结(超全面)
Jan 22 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
vue中el-upload上传图片到七牛的示例代码
Oct 19 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 Javascript
微信小程序实现抖音播放效果的实例代码
Apr 11 Javascript
JavaScript 常见的继承方式汇总
Sep 17 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缓冲 output_buffering的使用详解
2013/06/13 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
纪念建党演讲稿范文
2014/01/13 职场文书
自查自纠工作总结
2014/10/15 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
初中地理教学反思
2016/02/19 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
git stash(储藏)的用法总结
2022/06/25 Servers
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers