|
|
|
| собственно сабж)
как сделать это если файл txt очень большой и чтоб не тратить много ресурсов... | |
|
|
|
|
|
|
|
для: felamon
(18.05.2007 в 21:07)
| | файл txt очень большой
Что большой чего большой... непонятно.
Какая цель? Насколько большой? Может проще использовать базу данных, или dba (плоские) файлы? | |
|
|
|
|
|
|
|
для: Valick
(18.05.2007 в 21:50)
| | 1000 слов | |
|
|
|
|
|
|
|
для: felamon
(18.05.2007 в 21:07)
| | Вам помогут функции fopen() и fread() (или fgets()). | |
|
|
|
|
|
|
|
для: Саня
(18.05.2007 в 21:51)
| | они твари все! читают файл целиком! | |
|
|
|
|
|
|
|
для: felamon
(18.05.2007 в 22:08)
| | >они твари все! читают файл целиком!
а вот и нет!!!
Цитата из мануала:
string fread (int fp, int length)
fread() читает length байт из указателя файла, на который ссылается fp. Чтение останавливается, если прочитано length байт или если достигнут EOF (конец файла), смотря что вперёд.
ИМХО 1000 слов это совсем не много | |
|
|
|
|
|
|
|
для: PantiL
(18.05.2007 в 23:30)
| | как прочитать только первую строку я понял, а как удалить только её? | |
|
|
|
|
|
|
|
для: felamon
(19.05.2007 в 11:45)
| | Удалить строку с начала нельзя.. нужно переписывать файл заново, уже без первой строки. | |
|
|
|
|
|
|
|
для: felamon
(18.05.2007 в 22:08)
| | ничего подобного. Они читают ровно столько, сколько просите. Можете еще fgetc применить, и читать вообще посимволько. Быстрее, правда, не будет. | |
|
|
|
|
|
|
|
для: felamon
(18.05.2007 в 21:07)
| | если файл действительно очень большой, нужно организовать алгоритм так, чтобы удалять эту строку не приходилось.
1000 слов - это немного. 5-15Кб. | |
|
|
|
|
|
|
|
для: Trianon
(18.05.2007 в 23:29)
| | да но возможно будет и больше и удалять нужно по одной строчке циклом...что замедлит систему! | |
|
|
|
|
|
|
|
для: felamon
(19.05.2007 в 11:47)
| | Я же написал, сделаете так, чтобы удалять строки стало ненужно - не будет тормозов.
Удаление строки, как правильно отметил kasmanaft - массовая операция, требующая перезаписи всего файла. | |
|
|
|
|
|
|
|
для: Trianon
(19.05.2007 в 14:45)
| | сделаете так, чтобы удалять строки стало ненужно
Именно это уже давно придумано в "плоских" файлах. | |
|
|
|
|
|
|
|
для: Valick
(20.05.2007 в 08:07)
| | Что именно, и где именно? :) | |
|
|
|
|
|
|
|
для: Trianon
(20.05.2007 в 11:36)
| | Ну там обработчик dba-файлов (не помню какой из них конкретно, тот который есть у большинства хостеров, дома гляну) не удаляет строку, а помечает её как удалённую. А раз в неделю, допустим, можно перелопачивать файл целиком и удалять эти строки насильственным способом :) | |
|
|
|
|
|
|
|
для: Valick
(20.05.2007 в 12:44)
| | вот только файл текстовым уже не назовешь.
И даже такие накладные расходы могут оказаться в конечном итоге неприемлимыми.
К чему я это веду... Подумать над алгоритмом в любом случае невредно. | |
|
|
|
|
|
|
|
для: Trianon
(20.05.2007 в 13:15)
| | вот только файл текстовым уже не назовешь
Виноват, это ускользнуло от моего поля зрения))) Но скажем так текстовый файл из "плоского" можно получить в любое время дня и ночи... токо свистни (в смысле напиши функцию) ))))
На сколько я в теме про "плоские" файлы, самый большой минус - это то что у хостера может быть не подключена нужная библиотека. Чтение и запись там проходит "на ура", для всего остального есть базы данных. (о чём я собственно и имел в виду в своём первом посте))) )
Если не секрет, что там может оказаться неприемлимым?
Подумать над алгоритмом в любом случае невредно.
Думать никогда не вредно)))))))) | |
|
|
|