Как извлечь 7z архив на Android

Иногда бывают моменты, когда застреваешь на очень простой задаче. Мне никогда не приходилось взаимодействовать со сжатыми архивами (zip, 7Zip и так далее) на Android, и я не мог себе представить, что это окажется сложной задачей. Трудность здесь заключалась не в том, чтобы сделать это, а в том, чтобы найти нормальную документацию, в которой будет написано о том, как это сделать.
Поискав решения в Интернете, можно найти только старые и неуместные решения, которые на тот момент считались простыми.
Решение
После некоторых поисков я обнаружил библиотеку от Apache под названием Commons Compress, которая поддерживает множество типов архивов: ar, cpio, дамп Unix, tar, zip, gzip, XZ, Pack200, bzip2, 7z, arj, lzma, snappy, DEFLATE и Z файлы. Библиотека активно обновляется и требуется для своей работы Java 7.
Установка
Для того, чтобы добавить библиотеку в приложение, нужно добавить следующую строку в файл build.gradle модуля приложения в блок dependencies:
implementation 'org.apache.commons:commons-compress:1.18'
Использование
Создадим простое приложение, которое будет извлекать файлы из выбранного 7Zip-архива в папку для кэша, а затем выводить их список на экран.
Для этого разместим на экране компоненты Button и ListView, добавив их в разметку activity_main.xml, которая находится в папке res/layout.
Затем объявим эти компоненты в коде активности MainActivity.java.
public class MainActivity extends AppCompatActivity < private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listview); Button btn_extract = findViewById(R.id.btn_extract); >.
Поскольку архив будет находиться на SD-карте устройства, сначала нужно будет проверить наличие прав на чтение. Если прав нет — нужно запросить их.
private static final int REQUEST_PERMISSION_READ = 101; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); . btn_extract.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) < extractArchive(); fillList(); >else < ActivityCompat.requestPermissions(MainActivity.this, new String[] < android.Manifest.permission.WRITE_EXTERNAL_STORAGE >, REQUEST_PERMISSION_READ); > > >); > @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) < switch (requestCode) < case REQUEST_PERMISSION_READ: < if (grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) < extractArchive(); fillList(); >break; > > >
В методе extractArchive() мы будем выполнять основную работу по извлечению файлов с использованием библиотеки. Код этого метода показан ниже:
private void extractArchive() < String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) .getAbsolutePath(); String filename = "test.7z"; try < SevenZFile sevenZFile = new SevenZFile(new File(path, filename)); SevenZArchiveEntry entry = sevenZFile.getNextEntry(); File cache_dir = new File(getCacheDir() + "/" + filename.substring(0, filename.indexOf("."))); if (!cache_dir.exists()) cache_dir.mkdirs(); while (entry != null) < FileOutputStream out = new FileOutputStream(cache_dir + "/" + entry.getName()); byte[] content = new byte[(int) entry.getSize()]; sevenZFile.read(content, 0, content.length); out.write(content); out.close(); entry = sevenZFile.getNextEntry(); >sevenZFile.close(); > catch (IOException e) < e.printStackTrace(); >>
ВАЖНО! Если у вас при выполнении методов библиотеки приложение падает с ошибкой «java.lang.NoClassDefFoundError: Failed resolution of: Lorg/tukaani/xz/LZMA2Options;», то может помочь добавление в файл build.gradle модуля приложения следующей библиотеки:
implementation group: 'org.tukaani', name: 'xz', version: '1.5'
Затем, когда архив распакован, выведем список файлов в методе fillList(), создав простой адаптер и передав его в ListView.
private void fillList() < Listfiles = new ArrayList<>(); File cache_dir = new File(getCacheDir() + "/test"); for (File f : cache_dir.listFiles()) < files.add(f.getAbsolutePath()); >ArrayAdapter itemsAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, files); listView.setAdapter(itemsAdapter); listView.setVisibility(View.VISIBLE); >
Код активности целом выглядит следующим образом:
public class MainActivity extends AppCompatActivity < private static final int REQUEST_PERMISSION_READ = 101; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listview); Button btn_extract = findViewById(R.id.btn_extract); btn_extract.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) < extractArchive(); fillList(); >else < ActivityCompat.requestPermissions(MainActivity.this, new String[] < android.Manifest.permission.WRITE_EXTERNAL_STORAGE >, REQUEST_PERMISSION_READ); > > >); > @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) < switch (requestCode) < case REQUEST_PERMISSION_READ: < if (grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) < extractArchive(); fillList(); >break; > > > private void extractArchive() < String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) .getAbsolutePath(); String filename = "test.7z"; try < SevenZFile sevenZFile = new SevenZFile(new File(path, filename)); SevenZArchiveEntry entry = sevenZFile.getNextEntry(); File cache_dir = new File(getCacheDir() + "/" + filename.substring(0, filename.indexOf("."))); if (!cache_dir.exists()) cache_dir.mkdirs(); while (entry != null) < FileOutputStream out = new FileOutputStream(cache_dir + "/" + entry.getName()); byte[] content = new byte[(int) entry.getSize()]; sevenZFile.read(content, 0, content.length); out.write(content); out.close(); entry = sevenZFile.getNextEntry(); >sevenZFile.close(); > catch (IOException e) < e.printStackTrace(); >> private void fillList() < Listfiles = new ArrayList<>(); File cache_dir = new File(getCacheDir() + "/test"); for (File f : cache_dir.listFiles()) < files.add(f.getAbsolutePath()); >ArrayAdapter itemsAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, files); listView.setAdapter(itemsAdapter); listView.setVisibility(View.VISIBLE); > >
Так, с помощью всего нескольких строчек кода, мы создали простое приложение для извлечения файлов из 7z-архива.
Заключение
Как можно видеть, данная библиотека весьма проста в использовании и обладает богатым функционалом. Недостатком её может стать, разве что, то, что она может оказаться слишком мощной и тяжеловесной для какого-нибудь простого проекта.
Удачи в поисках простых решений!
Раздел: Кодинг Метки: 7z, Android, application, archive, lesson, tutorial
Как извлечь 7z архив на Android : 1 комментарий
- Иван 21.02.2019 Большое спасибо, особенно за подсказку насчёт NoClassDefFoundError !
Как открыть ZIP, RAR, 7Z файлы архивов на Андроид (телефоне, планшете)
С одной стороны, архивы позволяют серьезно экономить память (т.к. сжатый файл занимает меньше места) , ускоряется их передача по сети Интернет (где каждый мегабайт на счету), но с другой — нередко с ними возникают некоторые проблемы. Дело в том, что далеко не всегда удается открыть архив на Андроиде (многое зависит от версии системы, от того, какой проводник в нее встроен).
Ну а так как количество файлов в архивах просто огромно (многие книги, документы, и пр. — всё идет в сжатом виде) — то проблема весьма актуальна. В этой статье приведу несколько способов, как можно открыть популярные форматы архивов на Андроид и работать с ними. Думаю, многим заметка будет весьма кстати.
Дополнение!
Кстати, если вы хотите запустить на компьютере программу-эмулятор Андроид (в которую можно устанавливать приложения для телефона) — то рекомендую ознакомиться вот с этим: https://ocomp.info/emulyatoryi-android-dlya-pc.html
Открываем архивы на Андроид
Способ 1: с помощью встроенного проводника
В современную версию Андроид (как правило (возможно за исключением каких-то китайских аппаратов)) встроен многофункциональный проводник. Он позволяет просматривать и работать с популярными форматами архивов как с обычными каталогами: открывать и извлекать файлы из них.
Для проверки работы своего проводника: раскройте сначала список всех приложений и найдите среди них «Проводник» (ярлык на него, как правило, на первом экране отсутствует) . См. скрин ниже.
Далее перейдите в раздел «Файлы» и найдите свой архив в оном из каталогов памяти телефона или SD-карты (в зависимости от того, куда вы его скопировали).
Например, мой архив был в папке «Documents» . Если выбрать конкретный архив — то должно появиться меню с выбором «Открыть/извлечь» архив. См. скрин ниже, был открыт архив формата «ZIP» .
В общем-то, все просто и быстро. Единственный момент: если у вас достаточно много архивов и вы с ними часто работаете — то этот способ может быть не очень удобным (ниже рассмотрю парочку альтернативных вариантов).

Дополнение!
Если у вас в архивах лежат книги и различные документы (формата DOC, PDF, DJVU) — то их также можно просматривать с помощью спец. программ для чтения. О них рассказывал в этой статье: https://ocomp.info/chtenie-elektronnyih-knig.html
Чем открыть 7Z?
Если вы не смогли открыть файл двойным нажатием на него, то вам следует скачать и установить одну из программ представленных ниже, либо назначить программой по-умолчанию, уже установленную (изменить ассоциации файлов). Наиболее популярным программным обеспечением для даного формата является программа 7-Zip (для ОС Windows) и программа Corel WinZip Mac (для ОС Mac) — данные программы гарантированно открывают эти файлы. Ниже вы найдете полный каталог программ, открывающих формат 7Z для операционной системы Windows, Mac, Linux, Android.
Программы для открытия 7Z файлов
![]()
Чем открыть 7Z в Windows?
Corel WinZip
Smith Micro StuffIt Deluxe
B1 Free Archiver
RARLAB WinRAR
WinInizio ZipGenius
ConeXware PowerArchiver
![]()
Mac
Corel WinZip Mac
Smith Micro Stuffit Deluxe Mac
Incredible Bee Archiver
B1 Free Archiver
Sixty Five 7zX
The Unarchiver
Smith Micro StuffIt Expander
![]()
Linux
![]()
Android
File Viewer for Android
RARLAB RAR for Android
Общее описание расширения
Формат файла 7Z относится к расширениям из категории Сжатые файлы, его полное название — 7-Zip Compressed File.
Файл 7z является сжатым архивом, который был создан при помощи распространенного архиватора 7-Zip, представляющим из себя свободное программное обеспечение с открытым исходным кодом, доступное на бесплатной основе и наделяющее пользователей преимуществами многопоточности. Формат 7z имеет высокую степень сжатия данных LZMA.
Что еще может вызывать проблемы с файлом?
Наиболее часто встречаемой проблемой, из-за которой пользователи не могут открыть этот файл, является неверно назначенная программа. Чтобы исправить это в ОС Windows вам необходимо нажать правой кнопкой на файле, в контекстном меню навести мышь на пункт «Открыть с помощью», а выпадающем меню выбрать пункт «Выбрать программу. «. В результате вы увидите список установленных программ на вашем компьютере, и сможете выбрать подходящую. Рекомендуем также поставить галочку напротив пункта «Использовать это приложение для всех файлов 7Z».
- Попробуйте найти нужный файл в другом источнике в сети интернет. Возможно вам повезет найти более подходящую версию. Пример поиска в Google: «Файл filetype:7Z». Просто замените слово «файл» на нужное вам название;
- Попросите прислать вам исходный файл еще раз, возможно он был поврежден при передаче;
Знаете другие программы, которые могут открыть 7Z? Не смогли разобраться как открыть файл? Пишите в комментариях — мы дополним статью и ответим на ваши вопросы.
Видео форматы
Аудио форматы
Электронные книги
Текстовые форматы
Дисковые образы
Табличные данные
Растровые изображения
Векторные изображения
Резервное копирование
Raw
Сжатые файлы
Файлы данных
Базы
3D Изображения
CAD файлы
Файлы разработчиков
Зашифрованные файлы
Исполняемые форматы
Шрифты
Файлы игр
GIS, карты
Другие расширения
Форматы макетов
Форматы плагинов
Файлы настроек
Системные файлы
Веб форматы
Как открыть zip файл на Андроид. Лучшие приложения для работы с архивами.

Преимущества, которые дает формат ZIP нельзя описать несколькими словами. Благодаря этому формату можно осуществить сжатие данных в более компактный размер. Особенно это актуально для больших файлов или большого количества мелких. Время от времени вы можете загрузить ZIP-файл на свой телефон Андроид. Чтобы прочитать его содержимое, необходимо сначала разархивировать файл. В этой статье разберемся, каким образом можно открыть и разархивировать ZIP файл на Андроид.
Что такое ZIP-файл?
ZIP-файл — это архив одного или нескольких файлов, сжатых вместе с помощью алгоритма сжатия. ZIP — это один из самых распространенных форматов сжатия данных. Другие распространенные форматы архивированных файлов — RAR, 7Z и GZ.
В отличие от обычных файлов, которые можно открывать непосредственно с помощью приложений, сжатые файлы должны быть распакованы, прежде чем вы сможете увидеть, что находится внутри.
Как разархивировать файлы на Android
Чтобы разархивировать zip и другие файлы на Андроид, нам понадобится приложение, которое это делает. Не все файловые менеджеры на Android могут это. В этом руководстве мы будем использовать приложение Files by Google. Его можно бесплатно загрузить из Play Store.
Прежде чем распаковать файл, вам потребуется достаточно места на своем телефоне. Без достаточного объема памяти вы получите ошибку. Перед распаковкой zip архива убедитесь, что на вашем телефоне достаточно места, либо освободите его, воспользовавшись одним из инструментов для очистки места на телефоне.
- Загрузите и установите приложение Files by Google из Play Store если оно у вас не установлено.
- Откройте приложение, затем перейдите в папку, содержащую ZIP-файл (ZIP-файлы имеют расширение .ZIP).
- Нажмите на ZIP-файл и выберите Извлечь из всплывающего окна, чтобы начать процесс.
- После завершения распаковки приложение отобразит список всех извлеченных файлов.
- Если ZIP-файл вам больше не нужен, установите флажок Удалить ZIP-файл и нажмите Готово.

Files by Google извлекает файлы и сохраняет их в той же папке, что и исходный ZIP-файл. Если выбрать опцию Удалить ZIP-файл, исходный файл будет удален, но его содержимое останется в этой папке.
Другие приложения для открытия Zip-файлов на Android
Помимо Files by Google, вы можете использовать и другие приложения для выполнения подобных действий на своем смартфоне Андроид. Ниже представлен список лучших приложений для открытия ZIP-файлов на Android.
ZArchiver

ZArchiver — отличная программа для открытия ZIP-архивов на Android. Приложение поддерживает множество форматов, от самых распространенных до не очень распространенных. Среди поддерживаемых форматов 7zip, RAR, RAR5, BZIP2, GZIP, XZ, ISO, TAR и другие.
ZArchiver позволяет просматривать содержимое архивов выбранных форматов без распаковки, а при желании вы можете создавать собственные архивы, защищенные паролем. Приложение также поддерживает разделение архивов на части, но это доступно не для всех видов архивов.
Процесс извлечения файлов в ZArchiver выглядит следующим образом: нажмите на ZIP-файл, затем выберите Распаковать здесь или Распаковать в. Используйте «Распаковать…», чтобы указать, где должны находиться ваши распакованные файлы.
RAR

RAR — это еще одна универсальная программа управления файлами. Созданная теми же разработчиками, что и WinRAR, она может открывать RAR, ZIP, 7Z, ISO и другие типы файлов. Вы также можете сжимать файлы в выбранных форматах. RAR может просматривать архивы ZIP и RAR, не открывая их, приложение легкое и простое в использовании.
RAR поставляется с дополнительной функциональностью, включая возможность проверки и восстановления поврежденных архивов.
Процесс распаковки файлов практически такой же, как и через программу Zarchiver.
ALZip

ALZip поддерживает самые популярные форматы сжатых файлов — ZIP, 7z и RAR. Но помимо этих форматов, вы можете распаковывать и файлы других форматов. В программе также есть дополнительные функции, такие как разделение архивов на части и возможность предварительного просмотра файлов перед распаковкой архива.
Кроме того, ALZip поддерживает функцию drag-and-drop, поэтому вы можете легко создать архив, перетащив один файл в другой, а также перемещать или копировать файлы между папками.
Zip-Unzip-File Extractor

Zip-Unzip-File Extractor приложение для открытия ZIP-файлов на смартфоне или планшете Андроид. Это легкое приложение, и, как следует из названия, вы можете создавать и открывать ZIP-файлы. Для защиты ваших ZIP-архивов также доступно шифрование.
Как и другие приложения в этом списке, вы можете просмотреть содержимое архива перед распаковкой. У приложения дружественный пользовательский интерфейс, что является одной из ключевых особенностей приложения.
