メソッド説明:
指定されたファイル記述子FDに従ってファイルデータを読み取り、バッファーによって指しているバッファオブジェクトに書き込みます。 ReadFileよりも根本的なインターフェイスを提供します。
この方法は、ファイルを一般的に読み取ることをお勧めしません。これは、特にファイルサイズがわからない場合は、非常に厄介なものになる可能性のあるファイルのサイズを知らない場合は、ファイルを手動で管理し、ポインターをファイルする必要があるためです。
文法:
コードコピーは次のとおりです。
fs.read(fd、buffer、offset、length、position、[callback(err、bytesread、buffer)])))
この方法はFSモジュールに属しているため、使用前にFSモジュールを導入する必要があります(var fs = require( "fs"))
パラメーターを受信:
FSファイル記述子
バッファー、データが記述されます。
オフセット書き込みをオフセットバッファー
長さ(整数)ファイルの長さを読み取るバイトを指定します
位置(整数)ファイル読み取りの開始位置を指定します。このアイテムの場合、データは現在のファイルポインターの位置から読み取られます。
コールバックは、ERR、BytesRead、およびバッファーの3つのパラメーターを渡します
・ERR例外
bytesRead:読み取られたバイト数
・バッファ:バッファオブジェクト
例:
コードコピーは次のとおりです。
var fs = require( 'fs');
fs.open( '123.txt'、 'r'、function(err、fd){
if(err){
console.error(err);
戻る;
}
var buf = new Buffer(8);
fs.read(fd、buf、0、8、null、function(err、bytesread、buffer){
if(err){
console.log(err);
戻る;
}
console.log( 'bytesRead' +bytesRead);
console.log(バッファー);
})
})
ソースコード:
コードコピーは次のとおりです。
fs.read = function(fd、buffer、offset、length、position、callback){
if(!util.isbuffer(buffer)){
//レガシー文字列インターフェイス(FD、長さ、位置、エンコード、コールバック)
var CB =引数[4]、
エンコード=引数[3];
Assertencoding(エンコーディング);
位置=引数[2];
長さ=引数[1];
バッファー=新しいバッファー(長さ);
オフセット= 0;
callback = function(err、bytesread){
if(!cb)return;
var str =(bytesread> 0)? buffer.toString(エンコード、0、bytesRead): '';
(cb)(err、str、bytesread);
};
}
function wrapper(err、bytesread){
//バッファーへの参照を保持して、すぐにGC'を使用できないようにします。
callback && callback(err、bytesread || 0、buffer);
}
Binding.Read(FD、バッファー、オフセット、長さ、位置、ラッパー);
};