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 相关文章推荐
JS获取scrollHeight问题想到的标准问题
May 27 Javascript
asp javascript 实现关闭窗口时保存数据的办法
Nov 24 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
Feb 26 Javascript
jquery实现加载进度条提示效果
Nov 23 Javascript
Jquery ajax请求导出Excel表格的实现代码
Jun 08 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
Aug 05 Javascript
jquery仿京东侧边栏导航效果
Mar 02 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
BootstrapTable加载按钮功能实例代码详解
Sep 22 Javascript
基于Require.js使用方法(总结)
Oct 26 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
8个非常实用的Vue自定义指令
Dec 15 Vue.js
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
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
js Calender控件使用详解
2015/01/05 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python Requests安装与简单运用
2016/04/07 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python BS4库的安装与使用详解
2018/08/08 Python
Python基础知识点 初识Python.md
2019/05/14 Python
python实现接口并发测试脚本
2019/06/25 Python
Django获取应用下的所有models的例子
2019/08/30 Python
softmax及python实现过程解析
2019/09/30 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
结构工程个人自荐信范文
2013/11/30 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
法制报告会主持词
2014/04/02 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
给医院的感谢信
2015/01/21 职场文书
评职称个人总结
2015/03/05 职场文书
微信搭讪开场白
2015/05/28 职场文书
公司欠款证明
2015/06/24 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技