PHP의 ftruncate() 함수는 이미 열려 있는 파일을 지정된 길이만큼 잘라내는(truncate) 기능을 수행합니다. 파일 크기를 줄이거나 특정 길이로 맞춰야 할 때 유용하게 사용되며, 함수 실행에 성공하면 TRUE, 실패하면 FALSE를 반환합니다.
문법(Syntax)
ftruncate(file_pointer, size)
매개변수(Parameters)
file_pointer − 잘라내고자 하는 파일의 포인터입니다. 이때 해당 파일은 반드시 쓰기 모드(w)로 열려 있어야 합니다. 읽기 전용으로 열린 파일에는 적용할 수 없습니다.
size − 파일을 잘라낼 목표 크기입니다. 바이트 단위로 지정하며, 현재 파일 크기보다 작은 값을 넣으면 그 지점까지만 남기고 나머지 내용이 삭제됩니다.
반환 값(Return)
ftruncate() 함수는 다음 값을 반환합니다.
- 성공 시 TRUE
- 실패 시 FALSE
예제(Example)
아래 예제는 new.txt 파일의 원래 크기를 확인한 뒤, ftruncate()를 사용해 파일을 50바이트로 줄이고 결과를 다시 확인하는 과정을 보여줍니다.
<?php
// 원래 파일 크기 확인
echo filesize("new.txt");
echo " ";
// 쓰기 가능 모드(a+)로 파일 열기
$file_pointer = fopen("new.txt", "a+");
// 파일을 50바이트로 자르기
ftruncate($file_pointer, 50);
// 파일 닫기
fclose($file_pointer);
// 파일 상태 캐시 초기화
clearstatcache();
// 잘린 후 파일 크기 다시 확인
echo filesize("new.txt");
?>출력(Output)
400 50
참고 사항
- ftruncate()를 호출하기 전에 파일이 쓰기 모드로 열려 있어야 정상적으로 동작합니다.
- 파일 크기를 변경한 후 filesize() 등으로 크기를 다시 조회할 때는 clearstatcache()를 호출해 PHP의 파일 상태 캐시를 비워 주는 것이 좋습니다. 그렇지 않으면 이전 크기 정보가 그대로 반환될 수 있습니다.
- 지정한 size가 현재 파일 크기보다 클 경우, 일부 운영체제에서는 파일이 해당 크기까지 확장되며 빈 공간은 널(NULL) 바이트로 채워질 수 있습니다.