Работа с файлами
И ещё вопрос. Когда я открываю файл через функцию CreateFile то этот файл загружается в память весь, или только те фрагменты которые читаю из файла.
Подскажите, а нет ли API функции которая позволяет вставить или вырезать в (из) файла кусок.
И ещё вопрос. Когда я открываю файл через функцию CreateFile то этот файл загружается в память весь, или только те фрагменты которые читаю из файла.
Вырезать кусок не получится - придётся полностью перезаписывать файл. А CreateFile лишь открывает файл для возможного использования и вообще не загружает его в память.
Вырезать кусок не получится - придётся полностью перезаписывать файл. А CreateFile лишь открывает файл для возможного использования и вообще не загружает его в память.
Получится при использовании MAP файлов (функции CreateFileMapping и MapViewOfFile)
Получится при использовании MAP файлов (функции CreateFileMapping и MapViewOfFile)
MMF (Memory-mapped files) просто проецируются в память (по этому принципу работает файл подкачки), и с их помощью удалить часть данных из середины файла никак не удастся. Хотя бы и потому, что при создании подобного вида файлов для записи необходимо явно указывать размер будущего файла (если он будет меньше исходного, усечётся лишь задняя часть). Так что как ни верти, а записывать файл заново всё же придётся
Если это требуется, то это будет самое простое решение, не требующее больше ресурсов.
MMF подойдет для изменения порядка байт в файле на противоположный...
Если это требуется, то это будет самое простое решение, не требующее больше ресурсов.
Если проецировать файл несколько раз с разным offset, то, в принципе, можно и фрагмент данных вставить в середину файла. Но, ИМХО овчинка выделки не стоит - проще и быстрее для такой задачи будет "старый дедовский" метод с перезаписью. А вот поменять порядок байт на обратный - задача нетривиальная и практическое применение ей находится очень редко