2014-10-10 2 views
2

나는 node.js와 fs 패키지를 시험 중이다.node.js fs.readFile EOF에 도달했을 때 알려주는 방법

fs.readFile()에서 async IO를 사용하는 경우 판독기가 EOF를 기록했는지 또는 읽기 버퍼 크기가 가득 찼거나 스왑 아웃되었거나 다른 조건이 발생했는지 콜백 처리기에서 어떻게 알 수 있습니까? 또한 조사 할 수있는 파일 핸들이 없습니다. 그것은 잘못된 노드 관용구입니까?

고마워요. 네쉬

-

@Abe. 그래서 코드를 변경하여 한 번에 모든 것을 가져올 것이라고 가정했지만 큰 파일을 사용하면 오류가 발생합니다. 그러나 다른 모든 경우에 그냥 완벽하게

"buffer.js:194 
     this.parent = new SlowBuffer(this.length); 
        ^
RangeError: length > kMaxLength 
    at new Buffer (buffer.js:194:21) 
    at fs.js:225:16 
    at Object.oncomplete (fs.js:107:15)" 
+0

나는 EOF 이외의 것이 있으면 콜백의'err' 매개 변수에 뭔가가있을 것이라고 생각합니다. EOF 이외의 것이 발생했고'오류 '에 아무것도없는 상황이 발생 했습니까? –

+0

@Abe, 힌트를 보내 주셔서 감사합니다. 앞에서 말했듯이, 나는 노드를 배우는 중일 뿐이므로 사용하기 전에이 짐승을 이해하고 싶어서 토요일 밤 3시에 문제를 발견 할 필요가 없습니다. 코드를 수정하여 한 번에 모든 것을 얻고 하나의 테스트 케이스 (업데이트 된 q)에서 오류가 발생했습니다. – Dinesh

답변

4

fs.readFile() 파일의 전체 내용을 (가 EOF 때까지 읽기) 버퍼 달렸다. 파일을 읽는 중 오류가 발생하면 err 매개 변수가 설정됩니다. 그렇지 않으면 파일 내용을 콜백의 두 번째 인수로 가져옵니다.

+0

노드 문서가 덜 진절머리 나 싶습니다. 파이썬은 훨씬 뛰어납니다. – Dinesh

관련 문제