방법 설명:
지정된 파일 설명자 fd를 기반으로 파일 데이터를 읽고 버퍼가 가리키는 버퍼 개체를 씁니다. readFile보다 낮은 수준의 인터페이스를 제공합니다.
파일을 읽을 때 이 방법을 사용하는 것은 일반적으로 권장되지 않습니다. 버퍼와 파일 포인터를 수동으로 관리해야 하기 때문입니다. 특히 파일 크기를 모르는 경우 이는 매우 번거로운 일이 됩니다.
문법:
fs.read(fd,buffer,offset,length,position,[callback(err,bytesRead,buffer)])
이 메소드는 fs 모듈에 속하므로 사용하기 전에 fs 모듈을 도입해야 합니다(var fs= require(“fs”) )
수신 매개변수:
fs 파일 설명자
buffer 데이터가 기록될 버퍼입니다.
offset 버퍼에 기록된 오프셋
길이(정수) 읽은 파일의 길이를 바이트 단위로 지정합니다.
position (정수) 파일 읽기 시작 위치를 지정합니다. 이 항목이 null인 경우 현재 파일 포인터 위치부터 데이터를 읽습니다.
콜백 콜백은 err, bytesRead, buffer의 세 가지 매개변수를 전달합니다
· 오류 예외
· bytesRead: 읽은 바이트 수
·버퍼: 버퍼 객체
예:
var fs = require('fs');
fs.open('123.txt' , 'r' , 함수 (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 = 함수(fd, 버퍼, 오프셋, 길이, 위치, 콜백) {
if (!util.isBuffer(버퍼)) {
// 레거시 문자열 인터페이스(fd, 길이, 위치, 인코딩, 콜백)
var cb = 인수[4],
인코딩 = 인수[3];
주장인코딩(인코딩);
위치 = 인수[2];
길이 = 인수[1];
버퍼 = 새 버퍼(길이);
오프셋 = 0;
콜백 = function(err, bytesRead) {
(!cb) 반환인 경우;
var str = (bytesRead > 0) ? buffer.toString(encoding, 0, bytesRead) : '';
(cb)(err, str, bytesRead);
};
}
함수 래퍼(err, bytesRead) {
// 너무 빨리 GC되지 않도록 버퍼에 대한 참조를 유지합니다.
콜백 && 콜백(err, bytesRead || 0, 버퍼);
}
바인딩.read(fd, 버퍼, 오프셋, 길이, 위치, 래퍼);
};