
SplFileObject::fgets 함수는 파일의 한 줄을 읽어 오는 함수입니다. 그러나 이 함수는 파일에서 다음 줄을 읽기 전에 이전 줄을 끝내지 않는 한 다음 줄을 읽지 못합니다. 따라서, 파일의 첫 번째 줄을 읽은 후에 fgets 함수를 호출하면 두 번째 줄을 읽을 수 없습니다.
이 문제를 해결하기 위해, file pointer를 file end로 옮겨야 합니다. SplFileObject::seek() 함수를 사용하여 현재 포인터 위치를 파일의 끝으로 옮기면 됩니다.
다음은 예시입니다.
#hostingforum.kr
php
$file = new SplFileObject('test.txt');
$file->seek(PHP_INT_MAX);
echo $file->fgets(); // 파일의 두 번째 줄을 읽습니다.
// 또는
$file->seek(0);
$file->seek(2); // 두 번째 줄로 이동
echo $file->fgets(); // 파일의 두 번째 줄을 읽습니다.
// 또는
$file->seek(0);
while ($line = $file->fgets()) {
if ($i == 1) {
break;
}
$i++;
}
echo $file->fgets(); // 파일의 두 번째 줄을 읽습니다.
2025-04-19 18:43