Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Непосредственное редактирование файла ->>>-

2.5K
09 марта 2003 года
PSiXo
10 / / 13.01.2003
Необходимо отредактировать файл непосредственно, т.е. напрямую, без считывания файла в массив, например.
Проблема несколько глубже, чем может сначала показаться. С помощью fopen, fwrite я могу лишь записывать в файл. С помощью fseek записывать по определенному смещению. Но надо еще и удалять символы из файла, а также вставлять символы без удаления текущего текста.:)
Может, кто сталкивался с этим?
250
09 марта 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by PSiXo
Необходимо отредактировать файл непосредственно, т.е. напрямую, без считывания файла в массив, например.
Проблема несколько глубже, чем может сначала показаться. С помощью fopen, fwrite я могу лишь записывать в файл. С помощью fseek записывать по определенному смещению. Но надо еще и удалять символы из файла, а также вставлять символы без удаления текущего текста.:)
Может, кто сталкивался с этим?


Это сделать, нельзя полюбой надо перезаписываь весь фаил целиком, можно только дописывать в конец.. но полубой фаил весь перезаписывается..
А зачем тебе это надо ?

2.5K
10 марта 2003 года
PSiXo
10 / / 13.01.2003
Цитата:
Originally posted by Joker

Это сделать, нельзя полюбой надо перезаписываь весь фаил целиком, можно только дописывать в конец.. но полубой фаил весь перезаписывается..
А зачем тебе это надо ?



Не хочу прогонять кучу файлов через массив. Это ведь будет медленно!?

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

283
10 марта 2003 года
Alone
910 / / 20.11.2002
Цитата:
Originally posted by PSiXo

Не хочу прогонять кучу файлов через массив. Это ведь будет медленно!?


Уверен? Куча это сколько? 500? 3к?
А общий размер какой ? 30М? 100М?
Как часто выполнятся будет?
На какой машине?

Цитата:


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


Если ты хочеш что то найти а потом заменить тебе полюбому нужно читать весь файл (другое дело если ты используеш для храниения данных поля фиксированной велечены и "знаеш" где хронятся эти поля)
Я незнаю твой задачи но возможно например построчно считывать файл сохранять во временный полученный результатты а потом переименовать

2.5K
10 марта 2003 года
PSiXo
10 / / 13.01.2003
Совершенно не важно количество файлов (10, 100, 500 ...), есть лишь постановка задачи.
Она такова:
Имеем каталог с подкаталогами и файлами.
Некоторые файлы имеют гиперссылки на другие файлы в своем каталоге и/или в других папках.
Необходимо все файлы скопировать в один каталог с сохранением ссылок. Но некоторые файлы имеют одинаковое имя. Вот.
Что я делаю:
- одновременно - листинг всех файлов во всех каталогах с записью во временный файл (list.txt) имени и пути текущего файла и копирую его в новый каталог; в случае совпадения имени файла записываю новое имя в list.txt и копирую файл с уже новым именем.
- в новой папке просматриваю каждый файл в поисках ссылок; при нахождении таковой сравниваю с массивом значений (путь+имя), предварительно взятых из list.txt и заменяю их новыми значениями также загруженных из list.txt.

Ну, думал, есть способ редактирования файла без создания нового файла. Не уж то ошибался? :sad
537
10 марта 2003 года
Cover
87 / / 14.11.2002
Прогонять через массив все равно прийдется, вопрос в том как это делать. Скорость работы можно увеличить, если все сделать за один цикл - сравнение и изменение файла:
1) при просмотре файла, одновременно писать новый - копию, но с измененными ссылками, а в конце, первый файл удалить. Работает быстро, особенно, если операции с файлами кэшируются, но делается много лишней работы, если в файле нет ссылок, требующих изменения.
2) При нахождении ссылки, которую нужно изменить, копируем весь файл до этого места в новый, пишем новую ссылку в новый файл и копируем оставшйся файл в новый файл, после чего первый файл удаляем.
283
10 марта 2003 года
Alone
910 / / 20.11.2002
Цитата:
Originally posted by Cover
2) При нахождении ссылки, которую нужно изменить, копируем весь файл до этого места в новый, пишем новую ссылку в новый файл и копируем оставшйся файл в новый файл, после чего первый файл удаляем.



А если там не одна ссылка которую нужно заменить ?

Как они узнают на кого ссылатся (вслучае повторов имен файлов)?

PSiXo может вы расскажете подробно зачем это нужно (если это конечно не секрет :) ) ?
Возможно мы сможен подсказать совершенно другой путь решения ?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог