|
|
|
|
|
для: Tonik992
(14.06.2010 в 02:35)
| | Все хорошо, но проблема в том, что мне этого как-раз не надо. Мне нужно просто имеющийся файл на жестком диске обрезать...
И кстати я кажется нашел решение, в более низкоуровневых функциях доступа к файловой системе (dio) есть функция с говорящим названием dio_truncate(), но проблема в том, что начиная с версии 5.0.6, кажется, расширение php_dio убрали из PHP, а мне нужно то, что будет еще и работать на рядовом хостинге. Короче проблема нерешаема, придется использовать код вроде этого:
<?php
$fileName = '...'; // Это будет задано заранее
$header = '';
$mark = FALSE; // Конец заголовков еще не достигнут
$fp = fopen($fileName, 'r'); // Читаем файл
$fpW = fopen($fileName.'.copy', 'w'); // В этот файл будем писАть
while(!feof($fp)){
if($mark) fwrite($fpW, fread($fp, 0x1000)); // Конец заголовка достигнут? - значит пишем файл
else{
$str = fgets($fp);
if(trim($str) == '') $mark = TRUE;
else $header .= $str; // Да-да, заголовки мне тоже нужно собрать
}
}
unlink($fileName);
rename($fileName.'.copy', $fileName);
|
| |
|
|
|
|
|
|
|
для: Tonik992
(14.06.2010 в 02:35)
| | его можно записать в тот же самый файл, при чем совсем необязательно читать хвост целиком - достаточно кусками подходящего размера. | |
|
|
|
|
|
|
|
для: nikita2206
(14.06.2010 в 00:41)
| | Есть такое предложение решения:
1.открыть файл с помощью fopen("somefile.txt","r");
2.искать два подряд символа перевода строки (использовать ф-ю посимвольного чтения файла fgetc($handle)... читая символ, происходит смещение файлового указателя...... "можно и другими путями")..
3.далее использовать функцию fpassthru ($handle), которая читает указанный файловый указатель $handle с текущей позиции до EOF..
тем самым ты урежешь свои лишние строки, и получишь оставшийся результат... его можно либо в переменную, либо записать в отдельный файл. | |
|
|
|
|
|
|
| Собственно нужно удалить несколько строк из файла... Известно что эти строки находятся в самом начале, и от остального содержимого (которое удалять не нужно) их отделяет двойной перенос строки (то-есть фактически мне нужно удалить заголовки из файла).
Но соль в том, что этот файл может весить несколько мегабайт и перебирать весь файл будет довольно накладно... Есть ли функции в пхп, позволяющие вот так управлять файлами? | |
|
|
|
|