-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathDownloader.java
More file actions
58 lines (47 loc) · 1.72 KB
/
Downloader.java
File metadata and controls
58 lines (47 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package net.irisshaders.iris_installer;
import java.io.BufferedOutputStream;
import java.io.File;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import javax.swing.SwingWorker;
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
/**
*
* @author ims
*/
public class Downloader extends SwingWorker<Void, Void> {
private final String url;
private final File file;
public Downloader(String url, File file) {
this.url = url;
this.file = file;
}
@Override
protected Void doInBackground() throws Exception {
URL url = new URL(this.url);
HttpsURLConnection connection = (HttpsURLConnection) url
.openConnection();
long filesize = connection.getContentLengthLong();
if (filesize == -1) {
throw new Exception("Content length must not be -1 (unknown)!");
}
long totalDataRead = 0;
try ( java.io.BufferedInputStream in = new java.io.BufferedInputStream(connection.getInputStream())) {
java.io.FileOutputStream fos = new java.io.FileOutputStream(file);
try ( java.io.BufferedOutputStream bout = new BufferedOutputStream(fos, 1024)) {
byte[] data = new byte[1024];
int i;
while ((i = in.read(data, 0, 1024)) >= 0) {
totalDataRead = totalDataRead + i;
bout.write(data, 0, i);
int percent = (int) ((totalDataRead * 100) / filesize);
setProgress(percent);
}
}
}
return null;
}
}