node.js中的fs.write方法使用说明

 更新时间:2014年12月15日 08:49:28   投稿:junjie  
这篇文章主要介绍了node.js中的fs.write方法使用说明,本文介绍了fs.write的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

方法说明:

写入文件(根据文件描述符),功能与 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);
};

相关文章

  • node.js在Linux下执行shell命令、.sh脚本的问题

    node.js在Linux下执行shell命令、.sh脚本的问题

    很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将这些命令写成sh脚本,下次执行下这个脚本一切就都搞定了,下面就是发布代码的一个脚本示例
    2022-01-01
  • 基于Node.js实现数据转换工具

    基于Node.js实现数据转换工具

    在前端项目中,利用 Excel 表格和 Node.js 实现数据转换工具,可以有效优化增删改查等功能,下面小编就来和大家讲讲具体的实现步骤吧
    2025-02-02
  • NodeJS实现阿里大鱼短信通知发送

    NodeJS实现阿里大鱼短信通知发送

    本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。
    2016-01-01
  • 基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架

    基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架

    Node在整个环境中最重要的工作之一就是代理这些业务接口,以方便前端(Node端和浏览器端)整合数据做页面渲染。如何做好代理工作,使得前后端开发分离之后,仍然可以在流程上无缝衔接,是我们需要考虑的问题。本文将就该问题做相关探讨,并提出解决方案。
    2014-09-09
  • Nodejs下DNS缓存问题浅析

    Nodejs下DNS缓存问题浅析

    本文给大家一起探讨nodejs下dns的缓存问题,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2016-11-11
  • Node.js简单入门前传

    Node.js简单入门前传

    Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。接下来通过本文给大家分享node.js 入门前传,感兴趣的朋友一起看看吧
    2017-08-08
  • node.js中的http.response.end方法使用说明

    node.js中的http.response.end方法使用说明

    这篇文章主要介绍了node.js中的http.response.end方法使用说明,本文介绍了http.response.end的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 浅谈Nodejs应用主文件index.js

    浅谈Nodejs应用主文件index.js

    这篇文章主要介绍了浅谈Nodejs应用主文件index.js的相关资料,需要的朋友可以参考下
    2016-08-08
  • nodejs简单抓包工具使用详解

    nodejs简单抓包工具使用详解

    这篇文章主要介绍了nodejs简单抓包工具使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Node.js设置CORS跨域请求中多域名白名单的方法

    Node.js设置CORS跨域请求中多域名白名单的方法

    这篇文章主要介绍了Node.js设置CORS跨域请求中多域名白名单的方法,文中通过示例代码介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03

最新评论