
SplFileObject::rewind() 메서드는 파일 포인터를 파일의 처음 위치로 이동시킵니다. 이 메서드를 사용한 후 fread() 메서드를 사용하면 이전에 읽었던 데이터를 다시 읽을 수 없습니다.
이유는 SplFileObject는 파일을 읽을 때 내부 버퍼를 사용하기 때문입니다. fread() 메서드는 내부 버퍼에서 데이터를 읽습니다. 따라서, 파일 포인터를 처음 위치로 이동시키더라도 내부 버퍼에는 이전에 읽었던 데이터가 남아 있지 않습니다.
또한, 다른 파일을 열어서 rewind() 메서드를 사용한 후 fread() 메서드를 사용하면 이전에 열었던 파일의 데이터를 읽을 수 없습니다. SplFileObject는 파일을 읽을 때 내부 변수를 사용하기 때문입니다. 내부 변수는 파일을 열 때 초기화되기 때문에 이전에 열었던 파일의 데이터를 읽을 수 없습니다.
예를 들어, 다음 코드를 살펴보세요.
#hostingforum.kr
php
$file1 = new SplFileObject('file1.txt');
$file1->rewind();
$data1 = $file1->fread(10);
$file2 = new SplFileObject('file2.txt');
$file2->rewind();
$data2 = $file2->fread(10);
이 코드에서는 file1.txt를 읽고 rewind() 메서드를 사용하여 파일 포인터를 처음 위치로 이동시킵니다. 그리고 fread() 메서드를 사용하여 10바이트의 데이터를 읽습니다. 그런 다음, file2.txt를 읽고 rewind() 메서드를 사용하여 파일 포인터를 처음 위치로 이동시킵니다. fread() 메서드를 사용하여 10바이트의 데이터를 읽습니다.
이 코드를 실행하면 file2.txt의 데이터가 읽히는 것을 볼 수 있습니다. file1.txt의 데이터는 읽히지 않습니다.
2025-04-29 18:38