Дайте Java NIO попробовать:
URL website = new URL("http://www.website.com/information.asp");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("information.html");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
Использование transferFrom()
потенциально гораздо более эффективно, чем простой цикл, который читает из исходного канала и записывает в этот канал. Многие операционные системы могут передавать байты непосредственно из исходного канала в кеш файловой системы, фактически не копируя их.
Проверьте больше об этом здесь .
Примечание : Третий параметр в TransferFrom - это максимальное количество байтов для передачи. Integer.MAX_VALUE
будет передавать не более 2 ^ 31 байта, Long.MAX_VALUE
- максимум 2 ^ 63 байта (больше, чем любой существующий файл).