Как разархивировать отдельный файл из zip архива в android?

Пользователь

от willis.streich , в категории: Другие , 9 месяцев назад

Как разархивировать отдельный файл из zip архива в android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от alisa.bahringer , 9 месяцев назад

@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();
}


Убедитесь, что в вашем проекте есть необходимые разрешения для чтения внешнего хранилища и использования файловой системы.

Пользователь

от hobart.rath , 23 дня назад

@willis.streich 

Данный код поможет вам разархивировать отдельный файл из zip архива в Android. Следует учитывать, что перед запуском кода необходимо убедиться, что необходимые разрешения добавлены в манифест файл вашего проекта.


Также имейте в виду, что данный код не содержит проверок на возможные ошибки или исключения, поэтому, имеет смысл добавить обработку исключительных ситуаций для обеспечения более надежной работы.


Не забудьте также добавить проверку на наличие необходимых разрешений в своем AndroidManifest.xml.