Во время рабочего процесса необходимо генерировать папку для сжатия, а затем предоставить пользователю для загрузки. Поэтому я сам написал класс инструментов для сжатых файлов. Этот класс инструмента поддерживает сжатие отдельного файла и папок. Поместите код:
Импорт java.io.bufferedoutputstream; import java.io.file; import java.io.fileinputStream; import java.io.fileOutputStream; импорт org.apache.tools.zip.zipentry; import org.apache.tools.zip.zipoutpream 2013-7-28* @Description: Класс инструмента сжатия файлов* Сжатие указанного файла/папки в файлы ZIP и RAR*/Public Class CompressedFileutil {/*** Конструктор по умолчанию*/publicedfileutil () {}/*** @desc Создание исходного файла/папка в специфическом формате. file/ folder * @param targetPath назначение сжатого файла. Путь сохранения файлов * @return void * @Throws Exception */ public void CompressedFile (String ResourcesPath, String TargetPath) THRES Exception {File Resourcesfile = new File (ResourcesPath); // исходный файл файл target -file = new File (TargetPath); // Цель // Если путь назначения не существует, создайте новый if (! TargetFile.exists ()) {targetFile.mkdirs (); } String targetName = resourcesfile.getName ()+". Zip"; // Целевое сжатое имя файла FileOutputStream outputStream = new FileOutputStream (TargetPath+"//"+TargetName); Zipoutputstream out = new ZipOutputStream (новый BufferedOutputStream (outputStream)); CreateCompressedFile (Out, ResourcesFile, ""); out.close (); } /*** @desc Создание сжатого файла. * Если это папка, то используйте рекурсию для прохождения и сжатия файла * Если это файл, непосредственно сжимайте * @param out out out out stream * @param // Получить файл информации о списке файлов [] files = file.listfiles (); // Добавить папку в каталог упаковки следующего уровня. dir = dir.length () == 0? "": dir +"/"; // цикл для упаковки файлов в папке для (int i = 0; i <files.length; i ++) {createCompressedFile (out, files [i], dir+files [i] .getName ()); // Рекурсивная обработка}} else {// Текущий - это файл, обработка упаковки // файл ввода потока FileInputStream fis = new FileInputStream (file); out.putnextentry (новый zipentry (dir)); // написать int j = 0; Byte [] buffer = новый байт [1024]; while ((j = fis.read (buffer))> 0) {out.write (buffer, 0, j); } // Закрыть входной поток fis.close (); }} public static void main (string [] args) {compressedFileutil compressedFileutil = new CompressedFileutil (); try {compressedFileutil.compressedFile ("g: // Zip", "f: // Zip"); System.out.println («Сгенерированный файл был сгенерирован ...»); } catch (Exception e) {System.out.println ("Не удалось генерировать сжатые файлы ..."); e.printstacktrace (); }}}Результаты запуска программы следующие:
Структура каталога файлов перед сжатием:
Совет: Если вы используете java.util.zip под java.util для упаковки, может возникнуть проблема искаженного китайца. Это связано с тем, что метод ZIP Java не поддерживает изменения в формате кодирования. Мы можем использовать класс Zip Tool в Ant.java для упаковки. Поэтому вам необходимо импортировать Ant.jar в каталог LIB проекта.
Суммировать
Выше приведен пример кода для сгенерированных Java -сжатых файлов, введенных вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!