Descrição do método:
Leia os dados do arquivo de acordo com o descritor de arquivo especificado FD e grava no objeto buffer apontado pelo buffer. Ele fornece uma interface mais subjacente do que o arquivo de leitura.
Não é recomendável que este método leia os arquivos em geral, porque exige que você gerencie manualmente buffers e indicadores de arquivos, especialmente quando você não conhece o tamanho do arquivo, o que pode ser uma coisa muito problemática.
gramática:
A cópia do código é a seguinte:
fs.read (fd, buffer, deslocamento, comprimento, posição, [retorno de chamada (err, bytesread, buffer)]))
Como esse método pertence ao módulo FS, é necessário introduzir o módulo FS antes do uso (var fs = requer ("fs")))
Receber parâmetros:
Descritor de arquivo FS
Buffer, os dados serão gravados.
Offset Write para Offset Buffer
comprimento (número inteiro) especifica o comprimento dos bytes de leitura do arquivo
Posição (Inteiro) Especifica a posição inicial para a leitura do arquivo. Se este item for nulo, os dados serão lidos na posição do ponteiro atual do arquivo.
O retorno de chamada passa três parâmetros, err, bytesread e buffer
・ Error Exception
・ BytesRead: O número de bytes lido
・ Buffer: objeto de buffer
exemplo:
A cópia do código é a seguinte:
var fs = requer ('fs');
fs.open ('123.txt', 'r', function (err, fd) {
if (err) {
console.error (err);
retornar;
}
var BUF = novo buffer (8);
fs.read (fd, buf, 0, 8, nulo, função (err, bytesread, buffer) {
if (err) {
console.log (err);
retornar;
}
console.log ('bytesread' +bytesread);
console.log (buffer);
})
})
Código -fonte:
A cópia do código é a seguinte:
fs.read = function (fd, buffer, deslocamento, comprimento, posição, retorno de chamada) {
if (! util.isbuffer (buffer)) {
// Interface de string herdada (FD, comprimento, posição, codificação, retorno de chamada)
var cb = argumentos [4],
codificação = argumentos [3];
AssertEncoding (codificação);
posição = argumentos [2];
comprimento = argumentos [1];
buffer = novo buffer (comprimento);
deslocamento = 0;
retorno de chamada = função (err, bytesread) {
se (! cb) retornar;
var str = (bytesread> 0)? buffer.toString (codificação, 0, bytesread): '';
(cb) (err, str, bytesread);
};
}
função wrapper (err, bytesread) {
// Mantei uma referência ao buffer para que não possa ser GC'ed muito cedo.
retorno de chamada && (err, bytesread || 0, buffer);
}
binding.read (fd, buffer, deslocamento, comprimento, posição, invólucro);
};