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 相关文章推荐
禁止JQuery中的load方法装载IE缓存中文件的方法
Sep 11 Javascript
jQuery的css()方法用法实例
Dec 24 Javascript
jQuery中extend函数的实现原理详解
Feb 03 Javascript
JavaScript判断FileUpload控件上传文件类型
Sep 28 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
node跨域请求方法小结
Aug 25 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
Oct 23 Javascript
微信小程序画布圆形进度条显示效果
Nov 17 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
Apr 23 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 Javascript
解决iView Table组件宽度只变大不变小的问题
Nov 13 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
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python读取和保存视频文件
2018/04/16 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
python实现多层感知器
2019/01/18 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
建筑工程毕业生自我鉴定
2014/01/14 职场文书
职工趣味运动会方案
2014/02/10 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技