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 相关文章推荐
node.js中的url.resolve方法使用说明
Dec 10 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
原生js和jquery实现图片轮播淡入淡出效果
Apr 23 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
May 25 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
javascript中数组的常用算法深入分析
Mar 12 Javascript
记一次react前端项目打包优化的方法
Mar 30 Javascript
原生JS实现无缝轮播图片
Jun 24 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 Javascript
详解JavaScript的计时器和按钮效果设置
Feb 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中json_encode中文编码问题分析
2011/09/13 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
javascript时间函数大全
2014/06/30 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
垃圾回收器的相关知识点总结
2018/05/13 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
Python标准库与第三方库详解
2014/07/22 Python
python之wxPython菜单使用详解
2014/09/28 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
后勤部长岗位职责
2013/12/14 职场文书
房地产广告词大全
2014/03/19 职场文书
企业授权委托书范本
2014/04/02 职场文书
同意离婚答辩状
2015/05/22 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
python入门之算法学习
2021/04/22 Python
怎么用Python识别手势数字
2021/06/07 Python
Redis keys命令的具体使用
2022/06/05 Redis