メソッドの説明:
指定されたファイル記述子 fd に基づいてファイル データを読み取り、buffer が指すバッファ オブジェクトを書き込みます。 readFile よりも下位レベルのインターフェイスを提供します。
この方法を使用してファイルを読み取ることは、通常は推奨されません。バッファーとファイル ポインターを手動で管理する必要があるためです。特にファイル サイズがわからない場合、これは非常に面倒なことになります。
文法:
fs.read(fd,buffer,offset,length,position,[callback(err,bytesRead,buffer)])
このメソッドは fs モジュールに属しているため、使用する前に fs モジュールを導入する必要があります (var fs= require(“fs”) )
パラメータを受信します:
fs ファイル記述子
buffer データが書き込まれるバッファー。
offset バッファに書き込まれるオフセット
length (integer) 読み取られるファイルの長さをバイト単位で指定します
position (整数) ファイル読み込みの開始位置を指定します。この項目が null の場合、現在のファイル ポインターの位置からデータが読み込まれます。
callback コールバックは 3 つのパラメータ、err、bytesRead、buffer
を渡します。
· エラー例外
· bytesRead: 読み取られたバイト数
·buffer: バッファオブジェクト
例:
var fs = require('fs');
fs.open('123.txt' , 'r' , function (err,fd){
if(err){
コンソール.エラー(エラー);
}
var buf = 新しいバッファー
;
fs.read(fd, buf, 0, 8, null, function(err,bytesRead,buffer){
if(err){
コンソール.ログ(エラー);
}
console.log('bytesRead' bytesRead);
コンソール.ログ(バッファ);
})
})
ソースコード:
コードをコピーします
コードは次のとおりです:
fs.read = function(fd, バッファ, オフセット, 長さ, 位置, コールバック) {
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(encoding, 0, bytesRead) : '';
(cb)(err, str, bytesRead);
};
}
関数ラッパー(err, bytesRead) {
// すぐに GC されないように、バッファへの参照を保持します。
コールバック && コールバック(err, bytesRead || 0, バッファ);
}
binding.read(fd, バッファ, オフセット, 長さ, 位置, ラッパー);
};