Пишу свою систему контроля локальных версийНаподобие CVS/Git? Это проект хобби?
и в случае отката обратно удалять эти данные между современной версии и нужной намНасколько мне известно, Git не удаляет данные в случае отката, а лишь модифицирует состояние ветки в графе. А сами изменения становятся "осиротевшими". В случае нужды к ним можно вернуться, зная хэш фиксации.
логично, что для возврата объекта к жизни где-то должна храниться его структураО возврате к жизни (если в смысле извлечения файлов из архива) автор вопроса вроде бы ничего не писал. А для просмотра списка его достаточно хранить в памяти.
Нужно добавить отладочной информации в вывод, чтобы убедиться, что файл действительно zip. Просто печатать пути с именами на экран. Возможно, файл без расширения .zip или внутри некорректный формат данных.