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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

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

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


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