Итак, я так понимаю, вы хотите скачать и сжать файл.Это две разные задачи, поэтому вам нужно сделать две вещи:
- что-то для загрузки файла из Интернета
- что-то, чтобы сжать его в zip-файл
Я предлагаю использовать Apache HttpComponents для загрузки файла и Apache Compress для его сжатия.
Тогда код будет выглядеть примерно так...
// Obtain reference to file
HttpGet httpGet = new HttpGet("http://blahblablah.com/file.txt");
HttpResponse httpResponse = httpclient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
// Create the output ZIP file
ZipArchiveOutputStream zip = new ZipArchiveOutputStream(zipFile);
try {
// Write a file header in the .zip file
ArchiveEntry entry = new ZipArchiveEntry("file.txt");
zip.putArchiveEntry(entry);
// Download the file and write it to a compressed file
IOUtils.copy(httpEntity.getContent(), zip);
// The file is now written
zip.closeArchiveEntry();
} finally {
// Ensure output file is closed
zip.close();
}
Как это работает?HttpComponents получает InputStream
файла, а Compress предоставляет OutputStream
.Тогда вы просто копируете из одного потока в другой.Это как волшебство!