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对select标签的控制(option选项/select)
Jan 31 Javascript
Jquery异步提交表单代码分享
Mar 26 Javascript
js中this用法实例详解
May 05 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 Javascript
微信小程序入门教程
Nov 18 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
Jan 13 Javascript
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
微信小程序登陆注册功能的实现代码
Dec 10 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
基于javascript实现碰撞检测
Mar 12 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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中使用Oracle数据库(4)
2006/10/09 PHP
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
canvas绘制多边形
2017/02/24 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
详解Django 时间与时区设置问题
2019/07/23 Python
基于python实现地址和经纬度转换
2020/05/19 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
高一化学教学反思
2014/02/05 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
2015年信访工作总结
2015/04/07 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
Python连续赋值需要注意的一些问题
2021/06/03 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL