in appengine-plugins-core/src/main/java/com/google/cloud/tools/managedcloudsdk/install/Downloader.java [53:93]
public void download() throws IOException, InterruptedException {
if (!Files.exists(destinationFile.getParent())) {
Files.createDirectories(destinationFile.getParent());
}
if (Files.exists(destinationFile)) {
throw new FileAlreadyExistsException(destinationFile.toString());
}
URLConnection connection = address.openConnection();
connection.setRequestProperty("User-Agent", userAgentString);
try (InputStream in = connection.getInputStream()) {
// note : contentLength can potentially be -1 if it is unknown.
long contentLength = connection.getContentLengthLong();
logger.info("Downloading " + address + " to " + destinationFile);
try (BufferedOutputStream out =
new BufferedOutputStream(
Files.newOutputStream(destinationFile, StandardOpenOption.CREATE_NEW))) {
progressListener.start(
getDownloadStatus(contentLength, Locale.getDefault()), contentLength);
int bytesRead;
byte[] buffer = new byte[BUFFER_SIZE];
while ((bytesRead = in.read(buffer)) != -1) {
if (Thread.currentThread().isInterrupted()) {
logger.warning("Download was interrupted\n");
cleanUp();
throw new InterruptedException("Download was interrupted");
}
out.write(buffer, 0, bytesRead);
progressListener.update(bytesRead);
}
}
}
progressListener.done();
}