node.jsのfs.readメソッドの使用説明

2303 ワード

メソッドの説明:
指定されたファイル記述子fdに従ってファイルデータを読み出し、bufferが指すバッファオブジェクトに書き込む.readFileに対して、より下位レベルのインタフェースが提供されます.
一般的には、バッファとファイルポインタを手動で管理する必要があるため、ファイルのサイズが分からない場合は特に面倒なことになります.
構文:
 
  
fs.read(fd,buffer,offset,length,position,[callback(err,bytesRead,buffer)])

この方法はfsモジュールに属するため,使用前にfsモジュール(var fs=require(「fs」)を導入する必要がある.
受信パラメータ:
fsファイル記述子
bufferバッファで、データが書き込まれます.
offset buffer書き込みのオフセット量
length(integer)ファイル読み出しバイト数の長さを指定
position(integer)は、ファイル読み出しの開始位置を指定し、nullの場合、現在のファイルポインタの位置からデータの読み出しを開始します.
callbackコールバックは3つのパラメータ,err,bytesRead,bufferを伝達した.
・err異常
・bytesRead:読み出しバイト数
・buffer:バッファオブジェクト
例:
 
  
var fs = require('fs');
fs.open('123.txt' , 'r' , function (err,fd){
 if(err){
  console.error(err);
  return;
 }
 
 var buf = new Buffer(8);
 fs.read(fd, buf, 0, 8, null, function(err,bytesRead, buffer){
  if(err){
   console.log(err);
   return;
  }
  console.log('bytesRead' +bytesRead);
  console.log(buffer);
 })
})

ソース:
 
  
fs.read = function(fd, buffer, offset, length, position, callback) {
  if (!util.isBuffer(buffer)) {
    // legacy string interface (fd, length, position, encoding, callback)
    var cb = arguments[4],
        encoding = arguments[3];
    assertEncoding(encoding);
    position = arguments[2];
    length = arguments[1];
    buffer = new Buffer(length);
    offset = 0;
    callback = function(err, bytesRead) {
      if (!cb) return;
      var str = (bytesRead > 0) ? buffer.toString(encoding, 0, bytesRead) : '';
      (cb)(err, str, bytesRead);
    };
  }
  function wrapper(err, bytesRead) {
    // Retain a reference to buffer so that it can't be GC'ed too soon.
    callback && callback(err, bytesRead || 0, buffer);
  }
  binding.read(fd, buffer, offset, length, position, wrapper);
};