СообЧа > База Знаний > Интернет > Веб-строительство > PHP

Вопрос

Вопрос касается PHP. Необходимо писать в начало (или середину) файла причем не удаляя содержимого (как бы раздвигая содержимое файла). Приведенный ниже фрагмент не работает :-(

<? $st=fopen("p.txt", "a+"); //открыли для записи
fseek($st,0,SEEK_SET); //устанавливаем указатель на начало файла со смещением 0
fputs($st,"something"); //пишем в файл (по идее в его начало)
fclose($st); //закрыли ?>


В результате все равно запись появляется в конце файла.

Ответ

Дело в том, что Вы открыли файл в режиме для добавления, и если Вы указатель смещаете в 0, то он смещается на нулевую позицию добавления. Т.е. в конец первоначального файла.
Для того, чтобы записать в начало, потребуется загрузить файл в переменную, вывести во вновь созданный файл сначала нужную строку, а потом остальное содержимое, сохраненное в переменной.
Это не ограничение какого-либо языка программирования. Просто таков принцип хранения информации на дисках.

BSP

Дело не в принципе хранения информации на диске. Эта задача вполне разрешима, если заменить строку
$st=fopen('p.txt', 'a+') на $st=fopen('p.txt', 'r+')

SiMM



Copyright © 2000-2004 Сообщество Чайников
Контактная информация