방법 설명 :
지정된 파일 디스크립터 FD에 따라 파일 데이터를 읽고 버퍼가 가리키는 버퍼 객체에 씁니다. ReadFile보다 더 기본적인 인터페이스를 제공합니다.
이 방법은 일반적으로 버퍼와 파일 포인터를 수동으로 관리해야하기 때문에 파일을 읽는 것이 권장되지 않습니다. 특히 파일 크기를 알지 못하는 경우 매우 번거로운 일이 될 수 있습니다.
문법:
코드 사본은 다음과 같습니다.
fs.read (fd, 버퍼, 오프셋, 길이, 위치, [콜백 (err, bytesread, buffer)]))))
이 방법은 FS 모듈에 속하므로 사용하기 전에 FS 모듈을 소개해야합니다 (var fs = require ( "fs")).
매개 변수 수신 :
FS 파일 디스크립터
버퍼, 데이터가 작성됩니다.
오프셋 오프셋 버퍼에 쓰기
길이 (정수) 파일 읽기 바이트의 길이를 지정합니다.
위치 (정수) 파일 읽기의 시작 위치를 지정합니다. 이 항목이 NULL 인 경우 현재 파일 포인터 위치에서 데이터를 읽습니다.
콜백은 ERR, BYTESREAD 및 버퍼의 세 매개 변수를 전달합니다
・ err exception
bytesread : 읽은 바이트 수입니다
・ 버퍼 : 버퍼 객체
예:
코드 사본은 다음과 같습니다.
var fs = 요구 ( '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];
버퍼 = 새로운 버퍼 (길이);
오프셋 = 0;
콜백 = 함수 (err, bytesread) {
if (! cb) 반환;
var str = (bytesread> 0)? buffer.toString (인코딩, 0, 바이트 스레드) : '';
(cb) (err, str, bytesread);
};
}
함수 래퍼 (err, bytesread) {
// 너무 빨리 GC를 할 수 없도록 버퍼에 대한 참조를 유지하십시오.
콜백 && 콜백 (err, bytesread || 0, 버퍼);
}
binding.read (fd, 버퍼, 오프셋, 길이, 위치, 래퍼);
};