Большинство высокоуровневых представлений файлов являются потоками. C fopen
, ActiveX's Scripting.FileSystemObject
и ADODB.Stream
- на самом деле все, что построено на вершине C, скорее всего, будет использовать представление потока для редактирования файлов.Чтение и запись раздела файла только файла (без потоков)
Однако при изменении больших двоичных файлов с фиксированной структурой (~ 4MiB) представляется бесполезным считывать весь файл в память и записывать почти то же самое на диск - это почти наверняка будет связано с ограничением производительности. Глядя на большинство несжатых файловых систем, мне кажется, нет причин, по которым часть файла не могла быть прочитана и записана, не касаясь окружающих данных. В максимуме блок должен быть переписан, но обычно это порядка 4KiB; намного меньше, чем весь файл для больших файлов.
Пример:
00 01 02 03
04 05 06 07
08 09 0A 0B
0C 0D 0E 0F
может стать:
00 01 02 03
04 F0 F1 F2
F3 F4 F5 0B
0C 0D 0E 0F
Решение с использованием существующих объектов ActiveX было бы идеально, но любой способ сделать это без необходимости переписывать весь файл будет хорошо.
Не могли бы вы обновить свой вопрос, включив в него фрагменты кода? Кроме того, hta/javascript абсолютно необходимо. Если вы используете технологию, считаете ли вы PowerShell? http://stackoverflow.com/questions/20935356/methods-to-hex-edit-binary-files-via-powershell –
@StephenQuan Я имею в виду подход, основанный на потоке управления файлами. Я не знаю, как это сделать на C, и мне сказали, что это невозможно в Python ... Это может быть невозможно! Ссылка, которую вы дали, просто открывает файл, а затем сохраняет измененную копию, снова записывая все неизменные байты ... Я хочу, чтобы путь касался только измененных байтов по причинам скорости. – wizzwizz4
BTW, я не из тех, кто занижает ваш вопрос, я хотел бы знать, почему люди думают, что это тоже плохой вопрос, так как я думаю, что это законный вопрос. Я думаю, что PowerShell по-прежнему остается правильным способом. Вы все еще можете использовать HTA в качестве интерфейса внешнего интерфейса и делать что-то в соответствии с: http://stackoverflow.com/questions/20935356/methods-to-hex-edit-binary-files-via-powershell –