Что нового

[Файловая система] Записать один файл в начало другого

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Собственно, суть вопроса в названии темы.
Первый файл - исполняемый (exe), второй файл - архив.
Самый простой способ, это дописать второй файл к первому, но это время и создание лишнего файла.
Пробовал способ с установкой указателя в начало файла и запись. Но не сработало.
Где ошибка не могу понять.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
joiner [?]
способ с установкой указателя в начало файла и запись
В данном случае содержимое открытого файла не сдвигается - запись производится "поверх" текущего содержимого.
 

AZJIO

Меценат
Меценат
Сообщения
2,878
Репутация
1,194
joiner
Казалось бы надо перевести указатель в конец файла, чтобы писать следующий в конец открытого, но есть же в функции открытия флаг 1 - дописывать в конец файла не удаляя содержимое.
Если проблема в том, что дописываемый файл во много раз больше и нужно к большому файлу дописать в начало маленький, но такого нет, а в реальности можно писать либо поверх (не увеличивая файл или увеличивая, если запись выходит за границы текущего размера файла в конце) либо в конец, увеличивая его размер. Увеличивать размер файла, сдвигая границу начала - такого нет. И проблема я думаю в кластерах, так как дописывая в конец переходишь на следующий кластер, а от начала если кластер не дописан, то получается дыра между начальной частью и второй частью.. При резмере кластера в 4096 байт вероятность уложиться в размер кластера 1/4096, меньше 0,00025% поэтому такой вариант и не рассматривается. А таблица файлов адресуется по кластерам, так что видимо это технически не поддерживается даже файловой системой.
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
да, такое объяснение как раз и нашел в инете. придется придумывать велосипед.
цель - не создавать лишних файлов при слиянии двух. придется "отрезать" по куску от второго и "клеить" к первому, обнуляя "отрезанную" часть во втором файле. это весьма рискованный способ. можно потерять данные, но в моем случае это не критично, так как второй файл это архив и его можно пересоздать(то есть я его создаю)
 

AZJIO

Меценат
Меценат
Сообщения
2,878
Репутация
1,194
joiner
обнуляя "отрезанную" часть во втором файле
Почему обнуляя? Зачем лишнюю операцию "перезапись" делать? Проще просто его удалить после присоединения. Или чтобы осводождать место для склеиваемого? Тогда обнуляемый файл ведь тоже придётся переписывать.
 
Верх