|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Упаковать в zip папку со всеми вложениями |
|
Java - Упаковать в zip папку со всеми вложениями
|
Старожил Сообщения: 329 |
Профиль | Отправить PM | Цитировать Итак, нашел 2 метода упаковки папок в архив. НО оба с ошибками:
В первом создает файлы размером 0 байт с именем любого каталога: public static void zipDirectory(File dir, File zipFile) throws IOException { FileOutputStream fout = new FileOutputStream(zipFile); ZipOutputStream zout = new ZipOutputStream(fout); zipSubDirectory("", dir, zout); zout.close(); } private static void zipSubDirectory(String basePath, File dir, ZipOutputStream zout) throws IOException { byte[] buffer = new byte[8000]; File[] files = dir.listFiles(); for (File file : files) { if (file.isDirectory()) { String path = basePath + file.getName() + "/"; zout.putNextEntry(new ZipEntry(path)); zipSubDirectory(path, file, zout); zout.closeEntry(); } else { FileInputStream fin = new FileInputStream(file); zout.putNextEntry(new ZipEntry(basePath + file.getName())); int length; while ((length = fin.read(buffer)) > 0) { zout.write(buffer, 0, length); } zout.closeEntry(); fin.close(); } } } (При упаковки папки tmp вместо 1/2/3 делает tmp/1/2/3) public static void arhivedir(String zip, String folder) throws Exception { FileOutputStream fos = new FileOutputStream(zip); ZipOutputStream zos = new ZipOutputStream(fos); addDirToZipArchive(zos, new File(folder), null); zos.flush(); fos.flush(); zos.close(); fos.close(); } public static void addDirToZipArchive(ZipOutputStream zos, File fileToZip, String parrentDirectoryName) throws Exception { if (fileToZip == null || !fileToZip.exists()) { return; } String zipEntryName = fileToZip.getName(); if (parrentDirectoryName!=null && !parrentDirectoryName.isEmpty()) { zipEntryName = parrentDirectoryName + "/" + fileToZip.getName(); } if (fileToZip.isDirectory()) { System.out.println("+" + zipEntryName); for (File file : fileToZip.listFiles()) { addDirToZipArchive(zos, file, zipEntryName); } } else { System.out.println(" " + zipEntryName); byte[] buffer = new byte[4096]; FileInputStream fis = new FileInputStream(fileToZip); zos.putNextEntry(new ZipEntry(zipEntryName)); int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } zos.closeEntry(); fis.close(); } } |
|
Отправлено: 16:17, 01-06-2017 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 20:24, 01-06-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как переместить папку с подкаталогами и со всеми файлами | Insendio | Скриптовые языки администрирования Windows | 8 | 03-09-2014 18:16 | |
[решено] проблема со всеми комплектующими !!! | Stiletto | Непонятные проблемы с Железом | 97 | 25-07-2012 01:18 | |
Загрузка - обычная загрузка со всеми драйверами | СЕРЖ30 | Microsoft Windows 7 | 1 | 22-04-2012 18:13 | |
[решено] Как упаковать папку в один файл и указать в ней исполняемый (exe) файл? | SashaKl | Хочу все знать | 6 | 22-06-2009 01:11 |
|