Russian Qt Forum
Ноябрь 24, 2024, 11:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Изменить файл без его перезаписи  (Прочитано 12277 раз)
max1983
Гость
« : Июль 25, 2009, 21:49 »

Изменить файл без его перезаписи

Если добавлять инфу в конец файла то проблем нет.
А мне надо изменить середину.
Удалить или добавить данные.
Записан
f-r-o-s-t
Гость
« Ответ #1 : Июль 25, 2009, 23:36 »

http://lmgtfy.com/?q=%D0%A1%2B%2B+%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%D0%BC%D0%B8
Записан
max1983
Гость
« Ответ #2 : Июль 26, 2009, 00:00 »

Тут понимаешь стандартные подходы не годятся.
И не надо посылать всех на Хугл.
Стандартные функи по моему ток перезапись умеют, максимум добавлять в конец файла.
Ты наверно знаеш чегото чего я не знаю..
Поделись.. чаво скромничаеш  гуглом.
Записан
f-r-o-s-t
Гость
« Ответ #3 : Июль 26, 2009, 00:07 »

QIODevice::seek =)
Записан
max1983
Гость
« Ответ #4 : Июль 26, 2009, 01:54 »

=)
А довольный какой  Строит глазки

А я вот даже и не думал что средствами QT можно решить ету задачу.
Ну с меня пыво.
Ну и прощаю тебе за гугл  Смеющийся
Записан
f-r-o-s-t
Гость
« Ответ #5 : Июль 26, 2009, 12:11 »

Ну и прощаю тебе за гугл  Смеющийся

А я тебя за незнание С и С++.
Записан
max1983
Гость
« Ответ #6 : Июль 26, 2009, 15:48 »

Цитировать
А я тебя за незнание С и С++.

А вот и попался!
В чистом С++ таких функций нет.
Ну а С вроде не далек от С++.
Записан
denka
Гость
« Ответ #7 : Июль 26, 2009, 15:57 »

Цитировать
А я тебя за незнание С и С++.

А вот и попался!
В чистом С++ таких функций нет.
Ну а С вроде не далек от С++.

Я вам уже писал учить мать часть. Еще раз напишу. Учите С++ в частности стандартную библиотеку
Записан
spectre71
Гость
« Ответ #8 : Июль 26, 2009, 15:59 »

Вставки в файл не бывает!
Можно воспользоваться seek для позиционирования и перезаписи;
Вставка делается через перезапись хвоста!
Записан
denka
Гость
« Ответ #9 : Июль 26, 2009, 16:07 »

А смысл того что ты ему это рассказываешь? Человек не удосужился поработать со стандартдатной библиоткей ввода-вывода, зато какими речами кидаеться
Записан
f-r-o-s-t
Гость
« Ответ #10 : Июль 26, 2009, 16:27 »

А вот и попался!
В чистом С++ таких функций нет.
Ну а С вроде не далек от С++.

как уже написали выше, и там и там есть.
Записан
spectre71
Гость
« Ответ #11 : Июль 27, 2009, 08:04 »

Цитировать
Вставки в файл не бывает!
Можно воспользоваться seek для позиционирования и перезаписи;
Вставка делается через перезапись хвоста!

и кстати бывает...
ток там как-то на низком уровне к диску где-то чтал когда-то.
вот найти не могу.
Да имне интересно мож кто знает из форумчан другие способы.

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

1) Если файл не большой
   - если вставка одиночна или редка. Проще его перезаписать.
   - если вставка частая, в память его! По завершению операций перезаписать.
2) Если файл большой
   - если вставка одиночна. Проще его перезаписать.
   - если вставка частая, в память или во временные файлы нужные куски! По завершению операций перезаписать.
3) Если работаете с обновляемыми записями данных, выборками итд., пользуйтесь базами данных.
4) Есть еще такие средства как File Mapping, используется в основном для множественных случайных опереций чтения.

Вообще, что и как делать зависит от конкретной задачи.
Записан
max1983
Гость
« Ответ #12 : Июль 27, 2009, 08:43 »

Цитировать
2) Если файл большой
   - если вставка одиночна. Проще его перезаписать.

Если файл 500 метров а оперативки у юзера 128 и места в Temp исчерпано
А удалить нао из середины структуру на 10 метров
Конечн  можн юзать базы данных но для хранения примитивных одинаковых структур думал можн обойтись.

Записан
spectre71
Гость
« Ответ #13 : Июль 27, 2009, 09:31 »

Цитировать
2) Если файл большой
   - если вставка одиночна. Проще его перезаписать.

Если файл 500 метров а оперативки у юзера 128 и места в Temp исчерпано
А удалить нао из середины структуру на 10 метров
Конечн  можн юзать базы данных но для хранения примитивных одинаковых структур думал можн обойтись.
В данном случае именно перзаписывать файл! Подругому никак.

Теперь про комп. Встречные вопросы Улыбающийся
1) А если юзер бугалтер, работает только на калькуляторе, как ему записать на него файл?
2) А если у него винт сдох, как ему перезаписать файл?
3) А если он абсолютный тормоз, как ему перезаписать файл?
4) Я хочу поставить себе крутую совтину, ей надо 500 метров на диске, а у меня только 100! Что мне делать?


Записан
spectre71
Гость
« Ответ #14 : Июль 27, 2009, 09:39 »

Цитировать
2) Если файл большой
   - если вставка одиночна. Проще его перезаписать.

Если файл 500 метров а оперативки у юзера 128 и места в Temp исчерпано
А удалить нао из середины структуру на 10 метров
Конечн  можн юзать базы данных но для хранения примитивных одинаковых структур думал можн обойтись.
А вообще то, можно работать и с одним файлом (чтение/запись), расширять его, уменьшать, перзаписывать в нем куски.
Конкретное решение всегда зависит от конкретной задачи и ресурсов. А придумывать абстракции не имет смысла!
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.22 секунд. Запросов: 21.