And one way to do it is using a filesystem in a file. The OLE2 developers used this approach. Inside an OLE2 file, there are streams (files) and directories. Using libole2 it is easy to travel through such filesystem-in-a-file, and create, read, write or remove files, and create or remove directories.