forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Android (http://forum.boolean.name/forumdisplay.php?f=150)
-   -   где взять библиотеки для архивирования? (http://forum.boolean.name/showthread.php?t=16096)

barsunduk 25.12.2011 19:48

где взять библиотеки для архивирования?
 
кто-нибудь в курсе, где взять библиотеки для архивирования под android?
я библиотеки еще, правда, не использовал. как вообще можно реализовать загрузку архива с какого-то url и распаковку его в папке программы? пару дней безрезультатно пырился в поисковики. уже начал терять надежду.
есть смутные догадки, что надо искать для j2me, но там почему-то тоже глухо.

Piligrim 26.12.2011 00:24

Ответ: где взять библиотеки для архивирования?
 
Внимательно читайте документацию!

barsunduk 26.12.2011 20:17

Ответ: где взять библиотеки для архивирования?
 
Цитата:

Сообщение от Piligrim (Сообщение 215254)

спасибо огромное! не знаю, чтобы я делал без вашего совета! а так всё сразу стало ясно. все бы так отвечали, а то зачем-то код пишут, объясняют что-то...

можно было хоть ссылку кинуть какую-нибудь. типа этой что-ли:
java.util.zip

странно кстати, как я ее пропустил оО

barsunduk 19.01.2012 16:06

Ответ: где взять библиотеки для архивирования?
 
сегодня снова использовал класс для распаковки и решил расставить комментарии и выложить код в теме. есть подозрения, что он кому-то может пригодиться. может, это всё и просто, и очевидно, как многим кажется, но лично я - тормоз, помнится, въехал только с третьей попытки. надеюсь комментарии помогут кому-нибудь разобраться в принципах использования утилиты zip:
PHP код:

...
import java.io.*;
import java.util.zip.*;

public class  
Unzip {

    
// filename - имя файла архива
    // unzipPath - путь к папке, в которую будет распакованы файлы и папки из архива filename
    // метод поддерживает структуру папок при распаковке
    // (вхождение в архив - запакованные в архив файл или папка)
    
public static void unzip(String filenameString unzipPath) {
        try {
            
// буфер для чтения из архива
            
byte[] buf = new byte[1024];
            
// поток архива
            
ZipInputStream zipinputstream null;
            
// вхождения в архив
            
ZipEntry zipentry;
            
// создаем поток архива, параметр - свежесозданный поток файла архива
            
zipinputstream = new ZipInputStream(
                new 
FileInputStream(filename));
            
// получаем очередное вхождение в архив
            
zipentry zipinputstream.getNextEntry();
            
// перебираем все вхождения в архив
            // пока все вхождения в архив не кончатся
            
while (zipentry != null) { 
                
// получаем имя вхождения (запакованного файла или папки)
                
String entryName zipentry.getName();
                
// для отладки
                
System.out.println("entryname " entryName);
                
// количество фактически прочитанных байтов
                
int n;
                
// создаем поток для чтения распакованного файла/папки
                
FileOutputStream fileoutputstream;
                
// создаем собственно файл
                
File newFile = new File(entryName);
                
// если очередное вхождение - папка, то пропускаем текущую итерацию цикла
                
String directory newFile.getParent();
                if(
directory == null) {
                    if(
newFile.isDirectory())
                        break;
                }
                
// если вхождение - файл, то создаем выходной поток для записи распакованного файла
                // с учетом указанного пути для распаковки
                
fileoutputstream = new FileOutputStream(unzipPath entryName);
                
// переписываем весь файл из архива в созданный поток
                
while ((zipinputstream.read(buf01024)) > -1)
                    
fileoutputstream.write(buf0n);
                
// закрываем поток
                
fileoutputstream.close();
                
// закрываем вхождение
                
zipinputstream.closeEntry();
                
// получаем следующее вхождение
                
zipentry zipinputstream.getNextEntry();
            }
            
// закрываем поток архива
            
zipinputstream.close();
        } catch (
Exception e) {
            
e.printStackTrace();
        }
    }




Часовой пояс GMT +4, время: 12:12.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot