PHP: Как удалить последние N байтов из большого файла? - PullRequest
3 голосов
/ 30 декабря 2010

У меня есть большой файл, и мне нужно удалить последние 512 байт. Я не хочу дублировать файл.

Спасибо.

Ответы [ 3 ]

10 голосов
/ 30 декабря 2010

Вы должны использовать ftruncate(handle, file_size - 512) (получить размер файла с помощью функции filesize или fstat)

3 голосов
/ 19 ноября 2014

Пример использования с fstat, ftruncate, fopen и fclose:

<?php    

$bytesToTruncate = 5; // how many bytes we are going to delete from the end of the file

$handle = fopen('/home/francesco/mytest', 'r+'); // Open for reading and writing; place the file pointer at the beginning of the file.

$stat = fstat($handle);
$size = $stat['size'] - $bytesToTruncate;
$size = $size < 0 ? 0 : $size;

ftruncate($handle, $size);
fclose($handle);
2 голосов
/ 30 декабря 2010

Я не тестировал его с большими файлами, но вы можете попробовать:

...