@willis.streich
Вы можете использовать ZipInputStream
для разархивирования отдельного файла из zip архива в Android. Ниже приведен пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class ZipUtils { public static void extractFileFromZip(File zipFile, String filePath, String destinationPath) throws IOException { byte[] buffer = new byte[4096]; try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) { ZipEntry zipEntry; while ((zipEntry = zis.getNextEntry()) != null) { if (!zipEntry.isDirectory() && zipEntry.getName().equals(filePath)) { File outputFile = new File(destinationPath); // Create any necessary directories outputFile.getParentFile().mkdirs(); // Extract the file try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outputFile))) { int bytesRead; while ((bytesRead = zis.read(buffer)) != -1) { bos.write(buffer, 0, bytesRead); } } break; } } } } } |
Вы можете вызвать этот метод, передав в него путь к zip-файлу, путь к архивируемому файлу внутри архива и путь назначения для извлеченного файла:
1 2 3 4 5 |
try { ZipUtils.extractFileFromZip(new File("путь_к_zip_архиву"), "путь_к_архивируемому_файлу", "путь_назначения"); } catch (IOException e) { e.printStackTrace(); } |
Убедитесь, что в вашем проекте есть необходимые разрешения для чтения внешнего хранилища и использования файловой системы.