Как скачать файл в Java? - PullRequest
       2

Как скачать файл в Java?

6 голосов
/ 15 января 2011

Я пробовал несколько методов байта while и этот метод ниже:

try {
     URL dl = null;
     dl = new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip");
     ReadableByteChannel rbc = Channels.newChannel(dl.openStream());
     FileOutputStream fos = new FileOutputStream(fileName + "Screenshots.zip");
     fos.getChannel().transferFrom(rbc, 0, 1 << 24);
     System.out.println(fos.getChannel().size());
     fos.close();
     rbc.close();
 } catch (Exception e) {
     e.printStackTrace();
 }

}

Но методы не очень эффективны / быстры. Я узнал об apache Utils и использую

 IOUtils.copy(new URL("http://ds-forums.com/kyle-tests/uploads/Screenshots.zip").openStream(), new FileOutputStream(System.getProperty("user.home").replace("\\", "/") + "/Desktop/Screenshots.zip"));

но это лучший метод? Я так запутался сейчас, какой метод лучше всего скачать заархивированный файл 26 МБ. (Файл выше всего 1mb я тестирую методы)

Я прошу просто посмотреть, сталкивался ли кто-нибудь еще с этой проблемой, и, возможно, они могли бы мне помочь. Спасибо.

1 Ответ

26 голосов
/ 15 января 2011

Если у вас уже есть Commons IO на пути к классам, используйте

org.apache.commons.io.FileUtils.copyURLToFile(URL, File)

Он заботится обо всей потоковой обработке открытия, закрытия и вызова mkdirs для родительского файла.

...