Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для usenkov1988
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 4

Формат файла вмещающий в себя другие файлы

22.12.2012, 20:52. Показов 1237. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане.
Вопрос в следующем необходимо создать файл который бы вмещал в себя ряд файлов (по аналогии openXML). Какими средствами возможно решение?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.12.2012, 20:52
Ответы с готовыми решениями:

Перегрузить >> , для копирование с файла в другие файлы данные так fa>>fb>>fc
Где fa,fb,fc потоки fstream

Добавить блоки строк из одного txt файла в другие txt файлы
Здравствуйте. Можно ли сделать распределение блоков из одного txt в другие? В одном txt файле (назовем его общим) есть множество...

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

9
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
22.12.2012, 21:02
Я бы использовал бинарную запись: длина строки с именем файла, строка с именем файла, длина файла, сам файл (байты).
Как вариант для быстрого поиска внутри файла, можно в начале контейнера сделать таблицу файл-оффсет, но тогда будет сложнее добавлять новые файлы - придется сдвигать всю структуру для расширения таблицы.
1
 Аватар для usenkov1988
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 4
22.12.2012, 21:06  [ТС]
kolorotur спасибо за ответ, но это Вы как-то круто завернули. Можно немного кода?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
22.12.2012, 21:25
Я кодом помочь не смогу, но мысль озвучу.
Делал я как-то такую забаву. В ней был класс с бинарными и строковыми полями.
Создавался массив таких классов List<>
Ну и сериализация - десериализация, куда ж без нее.
В окне программы DataGridView с информацией о записях. Возможность редактирования, добавления, удаления.

Но вот беда. Когда файл уже совсем не маленький, программа стартует с задержкой.
И еще где-то в глубине души кроются подозрения, что этот файл ограничен по размеру (возможно, где-то 2 ГБ)
Поэтому для больших объемов данных такой способ неприемлем.
1
 Аватар для usenkov1988
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 4
24.12.2012, 08:38  [ТС]
Если по простому, то задача в следующем. Необходимо выбранный файл (например *.pdf, *.djv, ...) поместить в файл (например архив zip) с и добавить файл описания. Результирующий файл (архив) должен иметь уникальный формат, для того чтобы его можно было опять-таки программно открыть. Но хотелось бы не просто архивировать и разархивировать, а еще добавить конечному файлу атрибуты содержащиеся в файле описания.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
24.12.2012, 08:55
usenkov1988, если файлы небольшие и их немного, то мой способ сойдет.
Почитайте про сериализацию.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
24.12.2012, 09:12
Способов можно придумать море.
Не совсем понимаю, зачем придумывать свой велосипед, когда есть много готовых.
Из готовых:
Например, тот же XML, с кодированием бинарных данных (UU, base64).
Формат ASN. Формат HDF5.
Готовые СУБД, работающие с файлами - потребуются драйверы, но это не проблема. (Напр, обычный access-овский MDB).

Можно, наконец, просто использовать архиватор, а вашу доп. инфу складывать в отдельный файл. И не торопитесь махать на меня руками. В конце именно архиватор является кондовым решением задачи "слепить несколько файлов в один, чтобы потом можно было разлепить".
Т.е. задачу вы поставили как раз - "чтобы работало, как архиватор, но
Цитата Сообщение от usenkov1988 Посмотреть сообщение
не просто архивировать и разархивировать
".
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
24.12.2012, 14:01
Вот накидал все примерно. Проект правда на Барсе.

Через диалог добавляем файлы. Есть класс, который хранит имя файла, его тело, иконку и размер в килобайтах.
В ListView доступно контекстное меню, через которое можно добавлять и удалять файлы.
Кнопка "Добавить файлы" открывает диалог выбора файла, возможен мультивыбор
Кнопка "Извлечь файлы" открывает диалог открытия папки, в которую будут извлечены все файлы, если не возникли условия, препятствующие этому
Кнопка "Сохранить" открывает диалог сохранения пак-файла
Кнопка "Открыть" открывает диалог открытия пак-файла

Гиперссылка "Ассоциировать файлы с приложением" заносит изменения в реестр, если не возникли условия, препятствующие этому, благодаря чему значок файла *.pck изменяется и двойным щелчком по нему открывается приложение с содержимым указанного файла.

Как выглядит файл
Название: pic.jpg
Просмотров: 107

Размер: 2.0 Кб

Как выглядит приложение


Проект:
Хранение файлов в одном (проект).rar

Исполняемый файл Хранение файлов в одном.rar

[Visual Basic .NET, VS 2008 Rus, .NET Framework 2.0]
1
 Аватар для usenkov1988
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 4
24.12.2012, 20:56  [ТС]
Спасибо. На вскидку то, что надо. С VB разберусь. Если не трудно скажите суть работы, сериализация в файл?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
25.12.2012, 15:55
Цитата Сообщение от usenkov1988 Посмотреть сообщение
сериализация в файл
Да, создание специального класса. Создание списка оных и именно сериализация.

Не по теме:

Извините, отсутствовал по техническим причинам.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2012, 15:55
Помогаю со студенческими работами здесь

Добавление строк, взятых из одного файла, в другие файлы в случае отсутствия этих строк в этих файлах
Есть древо папок с файлами 2.apk\res\values\strings.xml 2.apk\res\values-ru\strings.xml 2.apk\res\values-en\strings.xml Папок вида ...

Программа, запаковывающая файлы в себя
Есть у меня например программа, которая должна запаковать файл указанный в параметрах в себя т.е. при запуске программы: myprog.exe...

закидывать файлы на другие
соединенные через свич несколько компов, как с одного компа (типа сервер) файлы, закидывать на остальные?

Что из себя представляют XPS-файлы?
Сколько имею ПК никогда не сталкивался с файлами XPS. Что это. Можно ли отключить в компонентах Windows печать и просмотр этих файлов. не...

Переместить все файлы, кроме себя
Здравствуйте! Данная программа перемещает все файлы в том числе и себя.Помогите пожалуйста модифицировать программу чтобы она не перемещала...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru