Посмотрите на этот пример:
StringBuilder sb = new StringBuilder();
sb.append("Test String");
File f = new File("d:\\test.zip");
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(f));
ZipEntry e = new ZipEntry("mytext.txt");
out.putNextEntry(e);
byte[] data = sb.toString().getBytes();
out.write(data, 0, data.length);
out.closeEntry();
out.close();
Это создаст zip в корне D:
с именем test.zip
, который будет содержать один единственный файл с именем mytext.txt
. Конечно, вы можете добавить больше записей в zip-архив, а также указать подкаталог следующим образом:
ZipEntry e = new ZipEntry("folderName/mytext.txt");
Вы можете найти дополнительную информацию о сжатии с помощью Java здесь .
Чтобы записать ZIP-файл, вы используете ZipOutputStream. Для каждой записи, которую вы хотите поместить в ZIP-файл, вы создаете объект ZipEntry. Вы передаете имя файла конструктору ZipEntry; он устанавливает другие параметры, такие как дата файла и метод распаковки. При желании вы можете изменить эти настройки. Затем вы вызываете метод putNextEntry объекта ZipOutputStream, чтобы начать запись нового файла. Отправьте данные файла в поток ZIP. Когда вы закончите, вызовите closeEntry. Повторите для всех файлов, которые хотите сохранить. Вот скелет кода:
FileOutputStream fout = new FileOutputStream("test.zip");
ZipOutputStream zout = new ZipOutputStream(fout);
for all files
{
ZipEntry ze = new ZipEntry(filename);
zout.putNextEntry(ze);
send data to zout;
zout.closeEntry();
}
zout.close();