Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502

Запись данных перед началом файла

25.08.2020, 23:09. Показов 1438. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Возникла такая проблемка, может кто знает оптимальное решение.
Допустим надо дописать 2 байта в конец файла,
тут все просто ставим SetFilePointer на конец и далее WriteFile.
Но как мне дописать два байта в начало файла не затирая то что в нем уже есть.
Проблема в том что файлы большие.
На данный момент я копирую файл целиком в буфер, затем пишу в него два байта,
а потом снова файл из буфера. В больших файлах, постоянно происходит
отказ выделения памяти. Если создать временный файл и копировать в него куски это долго.
Может есть простое решение??
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2020, 23:09
Ответы с готовыми решениями:

Основные задачи, перед началом разработки игры VS 2012 c++
Хотел узнать, но никто не отвечает/не нахожу, ответы на несколько вопросов. Очень надеюсь на помощь. Игра(2D скроллшутер) будет...

Перед началом создания игры
Я решаюсь создать игру. Несколько своих игр у меня уже имеются, но код у них просто ужасный. Игру хочу написать в основном для...

Евент перед началом инициализации контрола
Нужно сделать ивент перед началом инициализации контрола, пробовал сделать так, но ничерта не работает почему то... public class...

22
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
26.08.2020, 08:35
Студворк — интернет-сервис помощи студентам
По-моему, два байта в начало не добавить без перезаписи всего файла.

Весь диск разбит на некоторое количество блоков-кластеров. Каждый кластер имеет свой уникальный номер, который однозначно идентифицирует его положение на диске. Место на дисках под файл задаётся цепочкой таких кластеров, что-то вроде списка. Теоретически, можно было бы изменить цепочку кластеров добавив один в начало, но это далеко не два байта. Да и сделать подобное, наверное, не так просто. Нужны какие-нибудь низкоуровневые функции по работе с файловой системой, я таких не знаю.

Было бы логичным заранее предусмотреть в файле возможность расширения заголовка, оставив в начале некоторое количество резервных байт. Не обязательно прямо в нужном месте, но скажем в пределах нескольких первых килобайт. Тогда можно было бы переписать только эти первые килобайты.
0
 Аватар для Annemesski
2689 / 1346 / 485
Регистрация: 08.11.2016
Сообщений: 3,734
26.08.2020, 09:28
Решение дано: пользуйтесь file mapping. Если черт Вас дернет искать другое решение скажу сразу: овчина выделки не стоит, поскольку любой низкоуровневый подход будет зависеть от файловой системы и неизбежно будет порождать дополнительную фрагментацию файлов что явно не ускорит дальнейшую работу с этими файлами, а малейший косяк может порушить файловую систему начиная со структуры каталогов и заканчивая логической структурой хранилища.
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
26.08.2020, 16:13
Да, это половинки QWORD.

Только не длительность, а количество итераций. Узким местом будет работа с ФС, так что в данном случае вообще не критично.

Вы так и не расписали куда и как требуется итоговой результат. Если он куда-то передаётся через какой-нибудь поток - то вообще не надо менять исходный файл. Просто отправлять модифицированное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2020, 16:13

Где и как создавать БД перед началом работы
Доброго времени суток форумчане. Возник такой вопрос. Начинаю работать с БД. Знаю, что перед работой ее нужно создать в phpMyAdmin....

Вывод сообщения перед началом действия оператора
Суть в том, у меня есть табличка Студенты. Если я удаляю( а именно я копирую в другую таблицу и удаляю из этой). чтоб выходило...

Что почитать перед началом изучения языка
Привет всем! Такая проблема, пытаюсь учить язык С вначале все понятно, но чем дальше, тем все запутаней. Подскажите пожалуйста какие нибудь...

Как убрать задержку перед началом повтора?
Ранее вот в этой теме https://www.cyberforum.ru/windows/thread1596790.html мне объяснили как в Windows убрать задержку при зажатии. Но меня...

Задержка перед началом автоповтора набора символа клавиатуры
Когда я нажимаю и держу клавишу клавиатуры, сначала появляется символ, затем следует пауза и непрерывный автонабор сиволов. Как изменить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru