package cn.moegezi.v2ray.node.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class DownloadUtil { private final String url; private final File destFilename; public DownloadUtil(String url, File destFilename) { this.url = url; this.destFilename = destFilename; } public void download() throws IOException { FileOutputStream fos = new FileOutputStream(destFilename); URLConnection connection = new URL(url).openConnection(); long fileSize = connection.getContentLengthLong(); InputStream inputStream = connection.getInputStream(); byte[] buffer = new byte[10 * 1024 * 1024]; int numberOfBytesRead; long totalNumberOfBytesRead = 0; ConsoleProgressBar bar = new ConsoleProgressBar(); while ((numberOfBytesRead = inputStream.read(buffer)) != -1) { fos.write(buffer, 0, numberOfBytesRead); totalNumberOfBytesRead += numberOfBytesRead; bar.show(totalNumberOfBytesRead * 100 / fileSize); } fos.close(); inputStream.close(); } }