FileUtils (Apache IO)
Я использую FileUtils.copyURLToFile(URL, File)
для загрузки аудиозаписей в своей программе. Как мне отобразить прогресс загрузки файла?
На данный момент у меня после старта загрузки запускаются два потока так: Thread t = new Thread()..
. Один загружает собственно, а другой, пока "жив" первый, считает процент выполнения и выводит его на экран. Но уж больно мне это не нравится.
Хотел сделать это с помощью SwingWorker, но понял, что FileUtils.copyURLToFile(URL, File)
все равно не даст мне показывать прогресс publish()
, пока не закончится загрузка. Как быть?
Послушал совет @a_gura.
Сделал так:
URL u = new URL(url);
URLConnection connection = u.openConnection();
connection.setReadTimeout(2000);
BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
FileOutputStream out = new FileOutputStream(destination);
long b = connection.getContentLength();
byte[] buf = new byte[4096];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
String song = d.artist + " - "+ d.title;
long percent = destination.length()*100/b;
window.downloadProcess.setText(percent + " %");
}
out.close();
destination.setLastModified(connection.getLastModified());
in.close();