Форум программистов, компьютерный форум CyberForum.ru

Архивация больших данных - Android

Восстановить пароль Регистрация
 
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 242
19.01.2016, 16:13     Архивация больших данных #1
Есть класс для архивации папки и ее содержимого

Java
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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.ZipOutputStream;
 
final public class ZipUtils
{
    private static final void zip(File directory, File base, ZipOutputStream zos) throws IOException
    {
        byte[] buffer = new byte[1000 * 1024];      
        File[] files = directory.listFiles();
        
        for (File file : files)
        {
            if (file.isFile())
            {
                int index = base.getPath().length() + 1;
                FileInputStream in = new FileInputStream(file);         
                ZipEntry entry = new ZipEntry(file.getPath().substring(index));
                zos.putNextEntry(entry);
 
                int length = 0;             
                while ((length = in.read(buffer)) > 0)
                {
                    zos.write(buffer, 0, length);
                }
                in.close();
                continue;
            }
            zip(file, base, zos);
        }
    }
    
    public static final void zipFiles( File directory, File zip ) throws IOException
    {
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip));
        zip(directory, directory, zos);
        zos.close();
    }   
    
    public static final void zipFolder( File directory, File zip ) throws IOException
    {
        String path = directory.getPath();
        int index = path.lastIndexOf(File.separator);
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip));
        String root = path.substring(0, index);
        zip(directory, new File(root), zos);
        zos.close();
    }     
}
Но большие архивы не отправляются по почте.
Можно попробовать разбить архив на части, но есть вероятность, что один из частей не отправится.
Можно ли как архивировать папку независимыми архивами, ограниченными по размеру?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2016, 16:13     Архивация больших данных
Посмотрите здесь:

Android Как можно ускорить рендер больших текстур?
TableLayout - чтение данных из строк, изменение данных в строках Android
Android - Вывод данных из базы данных Android
Запрос данных по ID из нескольких баз данных Android
Как перехватить пакет (запрос) данных при текущей передаче данных? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru