PHP의 fseek
함수
fseek
함수는 파일 포인터의 위치를 변경하여 파일에서 원하는 위치로 이동할 때 사용됩니다. 이 함수를 사용하여 파일의 특정 위치로 이동한 후 데이터를 읽거나 쓸 수 있습니다.
fseek
함수의 사용 예시:
$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');
if ($fileHandle) {
// 파일 포인터를 50바이트 위치로 이동
fseek($fileHandle, 50);
// 이후 데이터를 읽음
$data = fread($fileHandle, 1024);
echo "Data at 50 bytes position: " . $data;
fclose($fileHandle);
} else {
echo "Failed to open the file.";
}
위 예시는 파일 ‘data.txt’를 읽기 모드로 열고, 파일 포인터를 50바이트 위치로 이동한 후 1024바이트의 데이터를 읽어옵니다.
다른 함수와 함께 사용하는 예시:
ftell
함수와 함께 사용하여 현재 파일 포인터 위치 파악:
$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');
if ($fileHandle) {
// 파일 포인터를 50바이트 위치로 이동
fseek($fileHandle, 50);
// 파일 포인터의 현재 위치를 파악
$currentPosition = ftell($fileHandle);
echo "Current file pointer position: $currentPosition";
fclose($fileHandle);
} else {
echo "Failed to open the file.";
}
위 예시는 파일 포인터를 50바이트 위치로 이동한 후, 현재 파일 포인터의 위치를 파악하여 출력합니다.
조건문과 반복문과 함께 사용하는 예시:
$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');
if ($fileHandle) {
// 파일 포인터를 0바이트 위치로 이동
fseek($fileHandle, 0);
// 파일의 첫 줄을 읽어옴
$line = fgets($fileHandle);
// 파일 포인터가 파일 끝에 도달할 때까지 반복
while (!feof($fileHandle)) {
echo "Line: " . $line;
// 다음 줄로 이동
$line = fgets($fileHandle);
}
fclose($fileHandle);
} else {
echo "Failed to open the file.";
}
위 예시는 파일 포인터를 처음으로 이동한 후, 파일의 모든 줄을 읽어와서 출력합니다.
성능 향상을 위한 팁:
fseek
함수는 파일 포인터를 원하는 위치로 이동시키기 때문에, 데이터를 읽기 전에 정확한 위치로 파일 포인터를 이동시키는 것이 중요합니다. 잘못된 위치로 이동할 경우 데이터를 올바르게 읽어올 수 없습니다.