Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Архивирование с вложеными папками 
:(
    Опции темы
MasterOfCode
Дата 25.2.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: нет
Всего: 27



Как создать архив который включает в себя папки.
Я делаю так:
Код

    // Рекурсивная функция для получения списка файлов
    private List<File> getFiles(String folder){
        List<File> list = new ArrayList<File>();
        File file = new File(folder);

        if (file.isFile()) {
         list.add(file);
        } else {
            File [] files = file.listFiles();
            if (files != null) {
                for (int i = 0; i < files.length; i++) {
                    List<File> resTmp = getFiles(files[i].getAbsolutePath());
                    Iterator<File> it = resTmp.iterator();
                    while (it.hasNext()) {
                     list.add((File)it.next());
                    }
                }
            } else {
                System.out.println("I/O Errors in " + file.getAbsolutePath());
            }
        }
        return list;
    }
    
        //Главная функция по созданию архива
    private String compressZIP(String folderPath) throws IOException{
        String fileName = "archive.zip";
        String archivePath = folderPath + File.separatorChar + fileName;
        System.out.println(archivePath);
        File archive = new File(archivePath);
        compress(archive, getFiles(folderPath));
        return fileName;
    }
    
        // процедура сжатия
    private void compress(File archive, List<File> files) throws IOException {
        ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(archive)));
        try {
            for (File file : files) {
                FileInputStream fis = new FileInputStream(file);
                try {
                    zos.putNextEntry(new ZipEntry(file.getName()));
                    int read = -1;
                    byte[] buffer = new byte[8 * 1024];
                    while ((read = fis.read(buffer)) != -1) {
                        zos.write(buffer,0,read);
                    }
                    zos.closeEntry();
                } finally {
                    fis.close();
                }
            }
        } finally {
            zos.flush();
            zos.close();
        }
    }
void main(){
       System.out.println(compressZIP("C:\\TEMP\\FOLDER"));
}

Если в папке FOLDER есть еще папки и в них файлы, то данный код сохранит архив в котором будут все файлы из всех папок в корне архива. А мне нужно чтоб структура папок была соблюдена в архиве после C:\TEMP\FOLDER\ 
Как реализовать?

Спасибо. Надеюсь объяснил понятно.


Это сообщение отредактировал(а) MasterOfCode - 25.2.2011, 10:31


--------------------
user posted image
PM ICQ   Вверх
aleksandy
Дата 25.2.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 4
Всего: 5



PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.