首頁 > web前端 > js教程 > node.js中的fs.write方法使用說明_node.js

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

WBOY
發布: 2016-05-16 16:27:08
原創
1646 人瀏覽過

方法說明:

寫入檔案(根據檔案描述子),功能與 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 =
 
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 =
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');
  })
 })
})

原始碼:

複製程式碼 程式碼如下:

// 用法:
// fs.write(fd, 緩衝區, 偏移量, 長度[, 位置], 回呼);
// 或
// fs.write(fd, string[,position[,encoding]],callback);
fs.write = 函數(fd, 緩衝區, 偏移量, 長度, 位置, 回呼) {
  if (util.isBuffer(buffer)) {
    // 若沒有傳遞位置則假設為 null
    if (util.isFunction(position)) {
      回呼=位置;
      位置 = null;
    }
    回呼 = MaybeCallback(回呼);
    var 包裝器 = 函數(錯誤,已寫入){
      // 保留對緩衝區的引用,以便它不會太快被 GC。
      回呼(錯誤,寫入 || 0,緩衝區);
    };
    return binding.writeBuffer(fd, 緩衝區, 偏移量, 長度, 位置, 包裝器);
  }
  if (util.isString(buffer))
    緩衝區 = '';
  if (!util.isFunction(position)) {
    if (util.isFunction(offset)) {
      位置 = 偏移量;
      偏移量 = null;
    } 其他 {
      位置=長度;
    }
    長度 = 'utf8';
  }
  回呼 = MaybeCallback(位置);
  位置 = 函數(錯誤,已寫){
    // 保留字串的引用,以防它是外在的
    回呼(錯誤,寫入 || 0,緩衝區);
  };
  返回綁定.writeString(fd, 緩衝區, 偏移量, 長度, 位置);
};
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板