Программа CompoundFK2.0 предназначена для работы с составными файлами. CompoundFK2.0 позволяет создавать составные файлы, добавлять субхранилища, загружать в потоки файлы размером до 20Мб, конвертировать потоки обратно в файлы, перемещать потоки и субхранилища внутри файла методом drag-and-drop, а также дефрагментировать составной файл. Составные файлы можно эффективно использовать для хранения двоичных и текстовых ресурсов любых программ.
Составной файл (структурированное хранилище) - файл, содержащий в себе некое подобие файловой системы. Сам головной файл является обычным файлом, имеет все свойства файла (т.е. копируется, удаляется, переименовывается и т.п.). Но самое важное то, что этот файл является точкой вхождения во внутреннюю область самого себя. Внутри есть каталоги, называемые хранилищами, есть файлы, называемые потоками. В каталоги-хранилища могут входить подкаталоги-хранилища, которые в свою очередь тоже могут содержать файлы-потоки. К сведению файлы .doc (MSWord), .xls (MSExcel) являются составными файлами. Работу с такой разновидностью файлов обеспечивает интерфейсы IStorage, IStream. В таких файлах можно и удобно хранить любую информацию, систематизировать ее по группам, доступ осуществляется к данным избрано, не загружая весь файл в память.
Допустим, программа требует в разное время загрузки определенных изображений (или других произвольных данных). Для разных положений требуются различные картинки, где их хранить? Конечно, в ресурсах, но при этом сам программный файл раздуется в разы больше самого программного кода. Тогда, где хранить изображения. Конечно, динамические библиотеки dll, но, если изображений десятки больших картинок или даже сотня, использовать dll "не экономично". Можно использовать несколько (или десятков) dll, сгруппировав данные по какому-либо признаку, или разработать свои специальные файлы хранения данных. А можно в таком случае применить составной файл и загружать в память только то изображение, которое требуется в данный момент работы программы, не занимая память лишними картинками. Составной файл можно считывать полностью или только необходимую его часть. Это очень полезно - программа не тянет время для загрузки всего составного файла, а эффективно-быстро загружает только необходимую его часть. Пример использования с исходными кодами вы можете найти в разделе исходников С++.