@Override public void run() { try { if (listener != null) listener.onDownloadStarted(lastFile.getServerName(), lastFile.getServerPath()); URL url = new URL(updateFilesFolderURL + lastFile.getServerPath().replace('\\', '/')); URLConnection conn = url.openConnection(); InputStream is = conn.getInputStream(); lastFileSize = conn.getContentLength(); File destinationFile = new File(downloadPath + lastFile.getServerPath()); // File name is included Files.createDirectories( destinationFile.toPath().getParent()); // Create any sub folder if not exists BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destinationFile)); byte[] buffer = new byte[8192]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { lastReceivedBytes += bytesRead; bufferedOutputStream.write(buffer, 0, bytesRead); if (listener != null) listener.onDownloadProgressChanged(lastReceivedBytes, lastFileSize); } bufferedOutputStream.flush(); bufferedOutputStream.close(); GZIP.decompress( destinationFile, new File(downloadPath + lastFile.getPath())); // File name is included destinationFile.delete(); if (listener != null) listener.onDownloadFinished(lastFile.getServerName(), lastFile.getServerPath()); nextDownload(); } catch (Exception e) { e.printStackTrace(); } }
private void nextDownload() { lastFile = null; lastFileSize = 0; lastReceivedBytes = 0; if (filesToDownload.size() > 0) { lastFile = filesToDownload.poll(); run(); } else { if (listener != null) listener.onUpdatingFinished(); } }
/** Starts the download. */ public void startDownload() { if (listener != null) listener.onUpdatingStarted(filesToDownload.size()); nextDownload(); }