Метод Описание:
Прочтите данные файла в соответствии с указанным дескриптором файла FD и запишите в буферный объект, на который указан буфер. Он обеспечивает более базовый интерфейс, чем readfile.
Этот метод, как правило, не рекомендуется читать файлы, потому что он требует от вас вручную управлять буферами и указателями файлов, особенно если вы не знаете размер файла, что может быть очень неприятной вещью.
Грамматика:
Кода -копия выглядит следующим образом:
fs.read (fd, буфер, смещение, длина, положение, [обратный вызов (err, bytesread, buffer)])
Поскольку этот метод принадлежит модулю FS, необходимо ввести модуль FS перед использованием (var fs = require («fs»))))
Получить параметры:
Файл Дескриптор файла FS
Буфер, данные будут записаны.
Offset Записать в буфер смещения
Длина (целое число) указывает длину байтов считывания файла
Position (Integer) указывает начальную позицию для чтения файлов. Если этот элемент является нулевым, данные будут считываться из положения текущего указателя файла.
Обратный вызов проходит три параметра: err, bytesread и buffer
・ ERR Exception
・ BytesRead: количество прочитанных байтов
・ Буфер: буферный объект
пример:
Кода -копия выглядит следующим образом:
var fs = require ('fs');
fs.open ('123.txt', 'r', function (err, fd) {
if (err) {
console.error (err);
возвращаться;
}
var buf = новый буфер (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, буфер, смещение, длина, положение, обратный вызов) {
if (! util.isbuffer (buffer)) {
// устаревшая строковая интерфейс (FD, длина, положение, кодирование, обратный вызов)
var cb = аргументы [4],
кодирование = аргументы [3];
AssertEncoding (кодирование);
позиция = аргументы [2];
длина = аргументы [1];
Buffer = новый буфер (длина);
offset = 0;
callback = function (err, bytesread) {
if (! cb) возврат;
var str = (bytesread> 0)? buffer.tostring (кодирование, 0, байт -чтение): '';
(CB) (err, str, bytesread);
};
}
Функциональная обертка (err, bytesread) {
// сохранить ссылку на буфер, чтобы его не могли быть задействованы слишком рано.
Callback && Callback (Err, BytesRead || 0, Buffer);
}
binding.read (fd, буфер, смещение, длина, положение, обертка);
};