Скачивание файла с прогрессом

212
30 марта 2018, 12:44

Доброго времени суток. Мне надо способ скачивать множество файлов одновременно по определённому пути в определённый каталог. В принципе как это сделать я знаю. Самый лёгкий способ через FileUtils, но мне нужно мониторить прогресс. Есть вариант с прогрессом, может быть какая-нибудь библиотека? Я нашёл множество замечательных android библиотек, но для desktop я ничего не нашёл.

Answer 1
public class DownloadProgress {
    public static void main(String[] args) {
        final JProgressBar progressBar = new JProgressBar();
        JFrame frame = new JFrame();
        frame.setContentPane(progressBar);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(300, 70);
        frame.setVisible(true);
        new Thread(() -> {
            try {
                URL url = new URL("http://gornostaev.su/media/files/data.zip");
                HttpURLConnection httpConnection = (HttpURLConnection) (url.openConnection());
                long fileSize = httpConnection.getContentLength();
                long chunkSize = fileSize / 100;
                try (BufferedInputStream in = new BufferedInputStream(httpConnection.getInputStream());
                     BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("data.zip"), 1024)) {
                    byte[] data = new byte[1024];
                    long downloaded = 0;
                    int read = 0;
                    while ((read = in.read(data, 0, 1024)) != -1) {
                        out.write(data, 0, read);
                        downloaded += read;
                        final int progress = (int) (downloaded / chunkSize);
                        SwingUtilities.invokeLater(() -> {
                            progressBar.setValue(progress);
                        });
                    }
                }
            }
            catch (FileNotFoundException exc) {}
            catch (IOException exc) {}
            SwingUtilities.invokeLater(() -> {
                progressBar.setString("Done");
                progressBar.setStringPainted(true);
            });
        }).start();        
    }
}
READ ALSO
Ссылки с помощью SpannableStringBuilder

Ссылки с помощью SpannableStringBuilder

Как убрать линии, которые находятся под текстом?

197
java.lang.OutOfMemoryError: Could not allocate JNI Env при чтении из сокета

java.lang.OutOfMemoryError: Could not allocate JNI Env при чтении из сокета

По таймеру слежу за сообщениями от сокет сервераСо временем программа вылетает

181
Цикл создания кнопок в android studio

Цикл создания кнопок в android studio

Всем привет, помогите разобраться, на activity есть главная кнопка, нажатие на неё должно приводить к созданию дочерней кнопки, след нажатие на главную...

204
Перенос текста с одной TextView на другую

Перенос текста с одной TextView на другую

Имеется две TextView и довольной большой текст, не помещающийся целиком на одну TextViewКаким образом можно сделать перенос не помещающегося текста...

133