루비의 현재 위치에서 2 바이트 뒤로 검색하려고합니다. 다음 코드는 이전 행의 끝을 찾으려고 시도합니다.파일의 현재 위치에서 음수를 찾는 방법은 무엇입니까?
1.9.3-p448 :003 > while file.getc != '\n'
1.9.3-p448 :004?> file.seek(-2,IO::SEEK_CUR)
1.9.3-p448 :005?> end
Errno::EINVAL: Invalid argument - test
from (irb):4:in `seek'
from (irb):4
from /usr/local/rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'
왜이 오류가 발생하는지 이해할 수 없습니다. 그것은 완벽하게 외부 루프를 추구합니다 (같은 문장). test는 파일 이름입니다.
왜 텍스트 파일에서 읽을 때'getc '를 사용하는지 궁금합니다. 라인을 읽고 마지막 몇 라인의 메모리에 작은 버퍼를 유지하는 것이 더 쉽고 빠르며, 버퍼를 통해 앞으로/뒤로 이동하는 것은 디스크의 문자 일치 인'getc '에 의존하는 것보다 쉽습니다. 파일 위치 지정. 코드 샘플은 냄새와 같이 매우 "C"합니다. 매우 특정한 (희귀 한) 경우를 제외하고는 루비에서 파일 I/O를 수행하는 방식이 아닙니다. –