Непосредственное редактирование файла ->>>-
Проблема несколько глубже, чем может сначала показаться. С помощью fopen, fwrite я могу лишь записывать в файл. С помощью fseek записывать по определенному смещению. Но надо еще и удалять символы из файла, а также вставлять символы без удаления текущего текста.:)
Может, кто сталкивался с этим?
Необходимо отредактировать файл непосредственно, т.е. напрямую, без считывания файла в массив, например.
Проблема несколько глубже, чем может сначала показаться. С помощью fopen, fwrite я могу лишь записывать в файл. С помощью fseek записывать по определенному смещению. Но надо еще и удалять символы из файла, а также вставлять символы без удаления текущего текста.:)
Может, кто сталкивался с этим?
Это сделать, нельзя полюбой надо перезаписываь весь фаил целиком, можно только дописывать в конец.. но полубой фаил весь перезаписывается..
А зачем тебе это надо ?
Это сделать, нельзя полюбой надо перезаписываь весь фаил целиком, можно только дописывать в конец.. но полубой фаил весь перезаписывается..
А зачем тебе это надо ?
Не хочу прогонять кучу файлов через массив. Это ведь будет медленно!?
Просто надо выполнить элементарный поиск с заменой над группой файлов (как в любом редакторе, но найти и заменить надо массив значений).
Не хочу прогонять кучу файлов через массив. Это ведь будет медленно!?
Уверен? Куча это сколько? 500? 3к?
А общий размер какой ? 30М? 100М?
Как часто выполнятся будет?
На какой машине?
Просто надо выполнить элементарный поиск с заменой над группой файлов (как в любом редакторе, но найти и заменить надо массив значений).
Если ты хочеш что то найти а потом заменить тебе полюбому нужно читать весь файл (другое дело если ты используеш для храниения данных поля фиксированной велечены и "знаеш" где хронятся эти поля)
Я незнаю твой задачи но возможно например построчно считывать файл сохранять во временный полученный результатты а потом переименовать
Она такова:
Имеем каталог с подкаталогами и файлами.
Некоторые файлы имеют гиперссылки на другие файлы в своем каталоге и/или в других папках.
Необходимо все файлы скопировать в один каталог с сохранением ссылок. Но некоторые файлы имеют одинаковое имя. Вот.
Что я делаю:
- одновременно - листинг всех файлов во всех каталогах с записью во временный файл (list.txt) имени и пути текущего файла и копирую его в новый каталог; в случае совпадения имени файла записываю новое имя в list.txt и копирую файл с уже новым именем.
- в новой папке просматриваю каждый файл в поисках ссылок; при нахождении таковой сравниваю с массивом значений (путь+имя), предварительно взятых из list.txt и заменяю их новыми значениями также загруженных из list.txt.
Ну, думал, есть способ редактирования файла без создания нового файла. Не уж то ошибался? :sad
1) при просмотре файла, одновременно писать новый - копию, но с измененными ссылками, а в конце, первый файл удалить. Работает быстро, особенно, если операции с файлами кэшируются, но делается много лишней работы, если в файле нет ссылок, требующих изменения.
2) При нахождении ссылки, которую нужно изменить, копируем весь файл до этого места в новый, пишем новую ссылку в новый файл и копируем оставшйся файл в новый файл, после чего первый файл удаляем.
2) При нахождении ссылки, которую нужно изменить, копируем весь файл до этого места в новый, пишем новую ссылку в новый файл и копируем оставшйся файл в новый файл, после чего первый файл удаляем.
А если там не одна ссылка которую нужно заменить ?
Как они узнают на кого ссылатся (вслучае повторов имен файлов)?
PSiXo может вы расскажете подробно зачем это нужно (если это конечно не секрет :) ) ?
Возможно мы сможен подсказать совершенно другой путь решения ?