У меня есть файл большой и вам нужно удалить последние 512 байт. Я не хочу дублировать файл.PHP: Как удалить последние N байтов из большого файла?
Спасибо.
У меня есть файл большой и вам нужно удалить последние 512 байт. Я не хочу дублировать файл.PHP: Как удалить последние N байтов из большого файла?
Спасибо.
Вы должны использовать ftruncate(handle, file_size - 512)
(получить размер файла с filesize
или fstat
функция)
Я не проверял его с большими файлами, но вы можете дать ему попробовать:
Пример использования с 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);
Насколько велика? 1 МБ? 1 ГБ? – BoltClock
Можете ли вы прочитать файл в памяти? – alexn
@alexn: Наверное, это не очень хорошая идея. – BoltClock