LZMA SDK iOS, чтобы показать прогресс

Если кто-то использовал оболочку iOS для LZMA SDK, доступную по адресу https://github.com/mdejong/lzmaSDK и смог настроить ее, чтобы увидеть процесс разархивирования, пожалуйста, помогите.

Я собираюсь использовать этот SDK в iOS для извлечения файла размером 16 МБ, который распаковывается в файл размером 150 МБ, и для его завершения требуется около 40 секунд. Было бы хорошо иметь какой-то обратный вызов, чтобы показать прогресс распаковки.

Помощь очень ценится. Спасибо

2 ответа

Решение

Итак, я недавно посмотрел на эту проблему, и, честно говоря, лучшее, что вы сможете сделать, - это найти все файлы в определенном каталоге tmp, где происходит декомпрессия, а затем посчитать их и сравнить с известным размером. N. Проблема с попытками сделать это в библиотеке заключается в том, что она охватывает несколько периодов выполнения, а идея обратного вызова делает код беспорядочным. Кроме того, обратный вызов не очень поможет из-за того, как работает сжатие 7z. Для декодирования необходимо создать словарь распаковки, прежде чем можно будет распаковывать определенные файлы, и этот процесс создания словаря занимает много времени, прежде чем первый файл может быть записан. Таким образом, если вы добавите счетчик "процент выполненных работ" в свое приложение, показывающий, сколько было сделано, он будет показывать 0% выполненных в течение длительного времени, а затем подскочит до 50%, а затем до 90 или 100 %. По сути, это было бы не очень полезно, даже если бы оно было реализовано.

Вы можете попробовать порт C++ последней версии LZMA SDK(15.06) без ограничений, описанных выше (версия C). Выделение памяти и чтение / запись ввода-вывода можно настроить во время выполнения, а также работать с зашифрованными паролем архивами, сглаженным прогрессом, типами архивов Lzma и Lzma2 и т. Д.

GitHub: https://github.com/OlehKulykov/LzmaSDKObjC

Другие вопросы по тегам