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 相关文章推荐
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
AngularJS使用ng-options指令实现下拉框
Aug 23 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
微信小程序的分类页面制作
Jun 27 Javascript
javascript中的replace函数(带注释demo)
Jan 07 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
基于vue的video播放器的实现示例
Feb 19 Vue.js
javascript实现简单页面倒计时
Mar 02 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
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php HTML无刷新提交表单
2016/04/05 PHP
JavaScript静态的动态
2006/09/18 Javascript
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
Vue中的字符串模板的使用
2018/05/17 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
python中sleep函数用法实例分析
2015/04/29 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
python reduce 函数使用详解
2017/12/05 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python实现杨氏矩阵查找
2019/03/02 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
python破解同事的压缩包密码
2020/10/14 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
英国袜子店:Sock Shop
2017/01/11 全球购物
机关门卫制度
2014/02/01 职场文书
初中同学会活动方案
2014/08/22 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS