java下载文件,防止第二次下载,直到第一次完成

时间:2016-02-28 16:15:20

标签: java

我从我的网站下载多个文件来更新应用程序,下载很好但是当有多个更新时,它会立即下载所有文件。我想在第一次下载完成后才下载第二个,我该怎么做呢?

这是他们的下载方式

        if (!fullyUpdated) {
            // upadateTextFile(array);
            array.remove(0);
            array.removeAll(arrayUpdated);
            System.out.println("Result: " + array);

            for (Double num : array) {
                download("http://xxxxxxxxxxxx.com/updates/" + num + ".zip", num);
            }
        }

public void download(String address, Double num) {
    progressBar.setValue(0);
    try {
        DownloadTask task = new DownloadTask(this, address, num);
        task.addPropertyChangeListener(this);
        task.execute();
    } catch (Exception ex) {
        System.out.println("Error");
    }
}

这是DownloadTask文件 http://pastebin.com/UV9c4vnK 和HTTPDownloadUtil http://pastebin.com/TcPRw2eD

2 个答案:

答案 0 :(得分:1)

您正在执行特定线程中的每个下载。它们都以异步方式工作。您应该将foreach循环移动到WorkerThread的doInBackground方法中。否则,为num。

中的每个元素启动一个Thread

您应该将Double-Array添加到DownloadTask的构造函数中,而不是单个Double-Value。

答案 1 :(得分:1)

您的下载在另一个Thread中执行,这会导致数据同时下载。

将线程管理委托给 SwingWorker ,这是由DownloadTask扩展的类。

要阻止 SwingWorker 在后台下载,您可以尝试删除 SwingWorker 扩展,删除覆盖注释,更改 doInBackground 的名称方法并让他包含完成方法(你将不再需要这个回调)。