fwrite() В начало файла

Разработка своих веб-приложений и страничек

fwrite() В начало файла

Сообщение Костик » 31 июл 2008, 02:21

Собсно время 2 ночи, голова вапще отказалась думать :crazy:
Хотел сделать чтобы строчка дозаписывалась в начале файла а не в конце

Код: Выделить всёРазвернуть
$str = "bla bla bla \r\n" ;
$file = fopen ("file.dat","a");
fseek($file,0,SEEK_SET);
fwrite($file,$str);
fclose($file);

мож как то иначе это делается ?
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: fwrite() В начало файла

Сообщение DPX-Infinity » 31 июл 2008, 08:01

ты хочешь, чтобы строчка "вставлялась" в начало? насколько знаю, это невозможно через stdio. я в таких случаях использовал функцию file() (читает файл в массив), добавлял элемент в начало массива и потом implode()->file_put_contents().
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: fwrite() В начало файла

Сообщение Костик » 31 июл 2008, 13:31

ну это да, а когда файл большой его же не буду пихать в массив.
Там построчный вывод файла.
А нужно записывать строчки в начало файла. Но как это будет выглядеть :unknown:
FreeBSD 9.2 and Fedora 18 user
Аватара пользователя
Костик
Активный участник
 
Сообщения: 1944
Зарегистрирован: 03 сен 2007, 02:15

Re: fwrite() В начало файла

Сообщение Lundil » 01 авг 2008, 20:06

Я же говорил, что индексный файл спасет отца русской демократии в твоем случае.
Или файл записей фиксированной длины.

Ты бы проблему озвучь полностью, а то поставленная тобой здесь задача, решаема, но очень херовыми путями. А вообще цель другая, чем написано в теме.

П.С.
че обещенного прозрения так и небыло?
Аватара пользователя
Lundil
Активный участник
 
Сообщения: 330
Зарегистрирован: 31 окт 2007, 10:41
Откуда: Саратов
Домен: http://mcsar.ru

Re: fwrite() В начало файла

Сообщение DPX-Infinity » 01 авг 2008, 20:47

file_put_contents($fname,$stringtoadd+"\r\n"+file_get_contents($fname));
так мб?
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: fwrite() В начало файла

Сообщение Lundil » 01 авг 2008, 21:39

DPX-Infinity писал(а):file_put_contents($fname,$stringtoadd+"\r\n"+file_get_contents($fname));
так мб?

ты так хочешь 42 Мб текустового файла записывать? (Ждем костика для полной озвучки проблемы)
Аватара пользователя
Lundil
Активный участник
 
Сообщения: 330
Зарегистрирован: 31 окт 2007, 10:41
Откуда: Саратов
Домен: http://mcsar.ru

Re: fwrite() В начало файла

Сообщение DPX-Infinity » 01 авг 2008, 22:22

а что, 42 метра? хм.. понятно, тогда не дело. в таком случае мне представляется что-то такое: создать новый файл, добавить в него строку и каким-нить образом приклеить к нему старый (без помощи функций чтения/записи в буффер).
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: fwrite() В начало файла

Сообщение Lundil » 01 авг 2008, 22:43

DPX-Infinity писал(а):а что, 42 метра? хм.. понятно, тогда не дело. в таком случае мне представляется что-то такое: создать новый файл, добавить в него строку и каким-нить образом приклеить к нему старый (без помощи функций чтения/записи в буффер).

приклеить без считывания нельзя.
Там у него проблема сделать постраничный вывод этого текстового файла.
тут 3 варианта
1. бить файл на куски.
2. строить индекс к этому файлу со сещение в байтах, чтоб можно было fseek использовать
3. файл записей фиксированной длины (тоже чтоб fseek использовать можно было)
Аватара пользователя
Lundil
Активный участник
 
Сообщения: 330
Зарегистрирован: 31 окт 2007, 10:41
Откуда: Саратов
Домен: http://mcsar.ru

Re: fwrite() В начало файла

Сообщение DPX-Infinity » 01 авг 2008, 23:09

ну если только вывод - может добавлять строки в конец и выводить с конца? или я опять чёто недопонял?
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: fwrite() В начало файла

Сообщение Lundil » 02 авг 2008, 16:52

DPX-Infinity писал(а):ну если только вывод - может добавлять строки в конец и выводить с конца? или я опять чёто недопонял?

файлы читаются только с начала, с конца до начала без его загрузки в память (или пробежав по все предыдущим) считать его невозможно смещение-то строки в файле неизвестно (строки произвольной длины).

Кароче выход - создать что-то вроде своей БД
Аватара пользователя
Lundil
Активный участник
 
Сообщения: 330
Зарегистрирован: 31 окт 2007, 10:41
Откуда: Саратов
Домен: http://mcsar.ru

След.

Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 151