php
PHP - fseek 함수
int fseek ( resource $handle , int $offset [, int $whence ] )
(PHP 4, PHP 5)
이 함수는 두 번째 인자와 세 번째 인자에 의해 결정되는 새로운 위치로 이동 시킵니다. offset 인자는 파일의 처음 위치부터 byte 수로 계산되는 값입니다. 성공시 "0"을, 실패시 "-1"를 반환하며, 세 번째 인자는 다음과 같은 상수를 사용합니다.
SEEK_END상수는 마지막 위치에서 offset 만큼 바이트 수로 계산되기 때문에 음수를 지정하며, 세 번째 인자를 생략할 경우 SEEK_SET로 간주하여 실행하게 됩니다.
SEEK_END 상수를 사용한 예입니다.
(PHP 4, PHP 5)
이 함수는 두 번째 인자와 세 번째 인자에 의해 결정되는 새로운 위치로 이동 시킵니다. offset 인자는 파일의 처음 위치부터 byte 수로 계산되는 값입니다. 성공시 "0"을, 실패시 "-1"를 반환하며, 세 번째 인자는 다음과 같은 상수를 사용합니다.
상 수 | 설 명 |
---|---|
SEEK_SET | 파일 포인터 첫 위치에서 offset 바이트만큼 위치로 이동합니다. |
SEEK_CUR | 현제 파일 포인터의 위치에서 offset 바이트만큼 위치로 이동합니다. |
SEEK_END | 파일 포인터 마지막 위치에서 offset 바이트만큼 위치로 이동합니다. |
SEEK_END상수는 마지막 위치에서 offset 만큼 바이트 수로 계산되기 때문에 음수를 지정하며, 세 번째 인자를 생략할 경우 SEEK_SET로 간주하여 실행하게 됩니다.
<?php
/*
test.txt파일 내용
1. 안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
3. 1234567890
4. abcdefghijklmnopqrstuq
5. asdfghjkl
6. qwertyuiop
7. qwertyuiop.BMP
*/
$file = 'test.txt';
if($fp = fopen($file,'r')){
if(is_resource($fp)){
// 1024는 한줄을 읽어 오게 해줍니다.
if($fname = fgets($fp,1024)){
echo $fname."<br />\n");
}
// 포인터 처음 위치에서 offset 2만큼 이동후 출력합니다.
fseek($fp,2);
if($fname = fgets($fp,1024)){
echo $fname ."<br />\n");
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
// 포인터 처음 위치에서 offset 3만큼 이동후 출력합니다.
// 포인터 첫 위치부터 다시 출력합니다.
fseek($fp,3,SEEK_SET);
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
// 현제 포인터 위치에서 offset 3만큼 이동후 출력합니다.
fseek($fp,3,SEEK_CUR);
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
} // end is_resource
fclose($fp);
} // end fp
/* 결과:
1. 안녕하세요. 하보니입니다.
안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
3. 1234567890
4. abcdefghijklmnopqrstuq
안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
3. 1234567890
4. abcdefghijklmnopqrstuq
asdfghjkl
6. qwertyuiop
*/
?>
SEEK_END 상수를 사용한 예입니다.
<?php
/*
test.txt파일 내용
1. 안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
3. 1234567890
4. abcdefghijklmnopqrstuq
5. asdfghjkl
6. qwertyuiop
7. qwertyuiop.BMP
*/
$file = 'test.txt';
if($fp = fopen($file,'r')){
if(is_resource($fp)){
// 1024는 한줄을 읽어 오게 해줍니다.
if($fname = fgets($fp,1024)){
echo $fname."<br />\n");
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n");
}
// 끝에서 3문자만 출력합니다.
fseek($fp,-3,SEEK_END);
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
} // end is_resource
fclose($fp);
} // end fp
/* 결과:
1. 안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
BMP
*/
?>
<?php
/*
test.txt파일 내용
1. 안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
3. 1234567890
4. abcdefghijklmnopqrstuq
5. asdfghjkl
6. qwertyuiop
7. qwertyuiop.BMP
*/
$file = 'test.txt';
if($fp = fopen($file,'r')){
if(is_resource($fp)){
// 1024는 한줄을 읽어 오게 해줍니다.
if($fname = fgets($fp,1024)){
echo $fname."<br />\n");
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n");
}
// 끝에서 10문자만 출력합니다.
fseek($fp,-10,SEEK_END);
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
// 포인터 처음 위치에서 offset 3만큼 이동후 출력합니다.
// 포인터 첫 위치부터 다시 출력합니다.
fseek($fp,3,SEEK_SET);
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
if($fname = fgets($fp,1024)){
echo $fname."<br />\n";
}
} // end is_resource
fclose($fp);
} // end fp
/* 결과:
1. 안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
tyuiop.BMP
안녕하세요. 하보니입니다.
2. rewind함수 테스트입니다.
3. 1234567890
4. abcdefghijklmnopqrstuq
5. asdfghjkl
6. qwertyuiop
*/
?>
0 댓글