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 相关文章推荐
接收键盘指令的脚本
Jun 26 Javascript
node.js中的dns.getServers方法使用说明
Dec 08 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
简单理解js的prototype属性及使用
Dec 07 Javascript
easyui-datagrid开发实践(总结)
Aug 02 Javascript
JavaScript实现三级联动菜单效果
Aug 16 Javascript
原生JS实现瀑布流插件
Feb 06 Javascript
如何使用less实现随机下雪动画详解
Jan 02 Javascript
微信小程序之几种常见的弹框提示信息实现详解
Jul 11 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
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按百分比生成缩略图的代码分享
2014/05/10 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
babel基本使用详解
2017/02/17 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
keras:model.compile损失函数的用法
2020/07/01 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
是否有自动比较结构的方法
2015/06/03 面试题
大学新生军训自我鉴定
2014/03/18 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
天坛导游词
2015/02/02 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
业余无线电通联Q语
2022/02/18 无线电