Java Code Examples for java.net.URLConnection#getContentLengthLong()

The following examples show how to use java.net.URLConnection#getContentLengthLong() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AbstractFileResolvingResource.java    From spring-analysis-note with MIT License 6 votes vote down vote up
@Override
public long contentLength() throws IOException {
	URL url = getURL();
	if (ResourceUtils.isFileURL(url)) {
		// Proceed with file system resolution
		File file = getFile();
		long length = file.length();
		if (length == 0L && !file.exists()) {
			throw new FileNotFoundException(getDescription() +
					" cannot be resolved in the file system for checking its content length");
		}
		return length;
	}
	else {
		// Try a URL connection content-length header
		URLConnection con = url.openConnection();
		customizeConnection(con);
		return con.getContentLengthLong();
	}
}
 
Example 2
Source File: DownloadUtils.java    From djl with Apache License 2.0 6 votes vote down vote up
/**
 * Downloads a file from specified url.
 *
 * @param url the url to download
 * @param output the output location
 * @param progress the progress tracker to show download progress
 * @throws IOException when IO operation fails in downloading
 */
public static void download(URL url, Path output, Progress progress) throws IOException {
    if (Files.exists(output)) {
        return;
    }
    Path dir = output.toAbsolutePath().getParent();
    if (dir != null) {
        Files.createDirectories(dir);
    }
    URLConnection conn = url.openConnection();
    if (progress != null) {
        long contentLength = conn.getContentLengthLong();
        if (contentLength > 0) {
            progress.reset("Downloading", contentLength, output.toFile().getName());
        }
    }
    try (InputStream is = conn.getInputStream()) {
        ProgressInputStream pis = new ProgressInputStream(is, progress);
        String fileName = url.getFile();
        if (fileName.endsWith(".gz")) {
            Files.copy(new GZIPInputStream(pis), output);
        } else {
            Files.copy(pis, output);
        }
    }
}
 
Example 3
Source File: FileProviderClasspath.java    From baratine with GNU General Public License v2.0 6 votes vote down vote up
@Override
public long size()
{
  ClassLoader loader = _loader;
  
  URL url = loader.getResource(_path);
  
  if (url == null) {
    return -1;
  }
  else {
    try {
      URLConnection conn = url.openConnection();
      
      return conn.getContentLengthLong();
      /*
      Path path = Paths.get(url.toURI());
    
      return Files.size(path);
      */
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
}
 
Example 4
Source File: DownloaderApp.java    From FXTutorials with MIT License 6 votes vote down vote up
@Override
protected Void call() throws Exception {
    String ext = url.substring(url.lastIndexOf("."), url.length());
    URLConnection connection = new URL(url).openConnection();
    long fileLength = connection.getContentLengthLong();

    try (InputStream is = connection.getInputStream();
            OutputStream os = Files.newOutputStream(Paths.get("downloadedfile" + ext))) {

        long nread = 0L;
        byte[] buf = new byte[8192];
        int n;
        while ((n = is.read(buf)) > 0) {
            os.write(buf, 0, n);
            nread += n;
            updateProgress(nread, fileLength);
        }
    }

    return null;
}
 
Example 5
Source File: RemoteArtifact.java    From embedded-cassandra with Apache License 2.0 6 votes vote down vote up
Resource download(URL url, ProgressListener progressListener) throws IOException {
	URLConnection connection = connect(url);
	try (InputStream is = connection.getInputStream()) {
		long totalSize = connection.getContentLengthLong();
		Path tempFile = createTempFile(url);
		progressListener.start();
		try (OutputStream os = Files.newOutputStream(tempFile)) {
			byte[] buffer = new byte[8192];
			long readBytes = 0;
			int read;
			while ((read = is.read(buffer)) != -1) {
				os.write(buffer, 0, read);
				readBytes += read;
				if (totalSize > 0 && readBytes > 0) {
					progressListener.update(readBytes, totalSize);
				}
			}
		}
		if (Thread.interrupted()) {
			throw new ClosedByInterruptException();
		}
		progressListener.finish();
		return new FileSystemResource(tempFile);
	}
}
 
Example 6
Source File: DownloadUtil.java    From ssrpanel-v2ray with GNU General Public License v3.0 6 votes vote down vote up
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();
}
 
Example 7
Source File: IO.java    From JglTF with MIT License 5 votes vote down vote up
/**
 * Try to obtain the content length from the given URI. Returns -1
 * if the content length can not be determined.
 * 
 * @param uri The URI
 * @return The content length
 */
public static long getContentLength(URI uri)
{
    try
    {
        URLConnection connection = uri.toURL().openConnection();
        return connection.getContentLengthLong();
    }
    catch (IOException e)
    {
        return -1;
    }
}
 
Example 8
Source File: UrlWebResource.java    From nexus-public with Eclipse Public License 1.0 5 votes vote down vote up
public UrlWebResource(final URL url, final String path, final String contentType, final boolean cacheable) {
  this.url = checkNotNull(url);
  this.path = checkNotNull(path);
  this.cacheable = cacheable;

  // open connection to get details about the resource
  try {
    final URLConnection connection = this.url.openConnection();
    try (final InputStream ignore = connection.getInputStream()) {
      if (Strings.isNullOrEmpty(contentType)) {
        this.contentType = connection.getContentType();
      }
      else {
        this.contentType = contentType;
      }

      // support for legacy int and modern long content-length
      long detectedSize = connection.getContentLengthLong();
      if (detectedSize == -1) {
        detectedSize = connection.getContentLength();
      }
      this.size = detectedSize;

      this.lastModified = connection.getLastModified();
    }
  }
  catch (IOException e) {
    throw new IllegalArgumentException("Resource inaccessible: " + url, e);
  }
}
 
Example 9
Source File: AdcVersionCheckTask.java    From arma-dialog-creator with MIT License 5 votes vote down vote up
private static void downloadFromServer(@NotNull URL url, long maxFileSize, @NotNull OutputStream outputStream,
									   @NotNull Function<Double, Double> progressUpdate) throws IOException, NotEnoughFreeSpaceException {

	BufferedInputStream in = null;
	URLConnection urlConnection = null;
	double workDone = 0;

	try {
		urlConnection = url.openConnection();
		in = new BufferedInputStream(urlConnection.getInputStream());

		long downloadSize = urlConnection.getContentLengthLong();
		if (maxFileSize < downloadSize) {
			in.close();
			outputStream.close();
			urlConnection.getInputStream().close();
			throw new NotEnoughFreeSpaceException(ADCUpdater.bundle.getString("Updater.not_enough_free_space"));
		}

		final byte data[] = new byte[1024];
		int count;
		while ((count = in.read(data, 0, 1024)) != -1) {
			outputStream.write(data, 0, count);
			workDone += count;
			progressUpdate.apply(workDone / downloadSize);
		}
	} finally {
		if (in != null) {
			in.close();
		}
		if (urlConnection != null) {
			urlConnection.getInputStream().close();
		}
		outputStream.close();
	}
}
 
Example 10
Source File: MCRURLContent.java    From mycore with GNU General Public License v3.0 5 votes vote down vote up
@Override
public String getETag() throws IOException {
    URLConnection openConnection = url.openConnection();
    openConnection.connect();
    String eTag = openConnection.getHeaderField("ETag");
    if (eTag != null) {
        return eTag;
    }
    long lastModified = openConnection.getLastModified();
    long length = openConnection.getContentLengthLong();
    eTag = getSimpleWeakETag(url.toString(), length, lastModified);
    return eTag == null ? null : eTag.substring(2);
}
 
Example 11
Source File: SSIServletExternalResolver.java    From Tomcat8-Source-Read with MIT License 5 votes vote down vote up
@Override
public long getFileSize(String path, boolean virtual) throws IOException {
    long fileSize = -1;
    try {
        URLConnection urlConnection = getURLConnection(path, virtual);
        fileSize = urlConnection.getContentLengthLong();
    } catch (IOException e) {
        // Ignore this. It will always fail for non-file based includes
    }
    return fileSize;
}
 
Example 12
Source File: UrlTransferUtil.java    From chipster with MIT License 5 votes vote down vote up
public static Long getContentLength(URL url, boolean isChipsterServer) throws IOException {
	URLConnection connection = null;
	try {
		connection = url.openConnection();
		if (isChipsterServer) {				
			KeyAndTrustManager.configureForChipsterCertificate(connection);
		} else {
			KeyAndTrustManager.configureForCACertificates(connection);
		}
		
		if (connection instanceof HttpURLConnection) {
			HttpURLConnection httpConnection = (HttpURLConnection) connection;
			// check the response code first because the content length may be the length of the error message
			if (httpConnection.getResponseCode() >= 200 && httpConnection.getResponseCode() < 300) {
				long contentLength = connection.getContentLengthLong();

				if (contentLength >= 0) {
					return contentLength;
				} else {
					throw new IOException("content length not available: " + connection.getContent());
				}					
			} else {
				throw new IOException("content length not available: " + httpConnection.getResponseCode() + " " + httpConnection.getResponseMessage());
			}
		} else {
			throw new IOException("the remote content location isn't using http or https protocol: " + url);
		}
	} finally {
		IOUtils.disconnectIfPossible(connection);
	}
}
 
Example 13
Source File: AbstractFileResolvingResource.java    From java-technology-stack with MIT License 5 votes vote down vote up
@Override
public boolean isReadable() {
	try {
		URL url = getURL();
		if (ResourceUtils.isFileURL(url)) {
			// Proceed with file system resolution
			File file = getFile();
			return (file.canRead() && !file.isDirectory());
		}
		else {
			// Try InputStream resolution for jar resources
			URLConnection con = url.openConnection();
			customizeConnection(con);
			if (con instanceof HttpURLConnection) {
				HttpURLConnection httpCon = (HttpURLConnection) con;
				int code = httpCon.getResponseCode();
				if (code != HttpURLConnection.HTTP_OK) {
					httpCon.disconnect();
					return false;
				}
			}
			long contentLength = con.getContentLengthLong();
			if (contentLength > 0) {
				return true;
			}
			else if (contentLength == 0) {
				// Empty file or directory -> not considered readable...
				return false;
			}
			else {
				// Fall back to stream existence: can we open the stream?
				getInputStream().close();
				return true;
			}
		}
	}
	catch (IOException ex) {
		return false;
	}
}
 
Example 14
Source File: AbstractFileResolvingResource.java    From spring-analysis-note with MIT License 5 votes vote down vote up
@Override
public boolean isReadable() {
	try {
		URL url = getURL();
		if (ResourceUtils.isFileURL(url)) {
			// Proceed with file system resolution
			File file = getFile();
			return (file.canRead() && !file.isDirectory());
		}
		else {
			// Try InputStream resolution for jar resources
			URLConnection con = url.openConnection();
			customizeConnection(con);
			if (con instanceof HttpURLConnection) {
				HttpURLConnection httpCon = (HttpURLConnection) con;
				int code = httpCon.getResponseCode();
				if (code != HttpURLConnection.HTTP_OK) {
					httpCon.disconnect();
					return false;
				}
			}
			long contentLength = con.getContentLengthLong();
			if (contentLength > 0) {
				return true;
			}
			else if (contentLength == 0) {
				// Empty file or directory -> not considered readable...
				return false;
			}
			else {
				// Fall back to stream existence: can we open the stream?
				getInputStream().close();
				return true;
			}
		}
	}
	catch (IOException ex) {
		return false;
	}
}
 
Example 15
Source File: HttpImporter.java    From packagedrone with Eclipse Public License 1.0 4 votes vote down vote up
@Override
public void runImport ( final ImportContext context, final String configuration ) throws Exception
{
    final Configuration cfg = this.gson.fromJson ( configuration, Configuration.class );

    logger.debug ( "Get URL: {}", cfg.getUrl () );

    final URL url = new URL ( cfg.getUrl () );

    final Path file = Files.createTempFile ( "import", null );

    final URLConnection con = url.openConnection ();

    con.setRequestProperty ( "User-Agent", VersionInformation.USER_AGENT );

    String name;

    final Context job = context.getJobContext ();

    try ( final InputStream in = con.getInputStream ();
          OutputStream out = new BufferedOutputStream ( new FileOutputStream ( file.toFile () ) ) )
    {
        final long length = con.getContentLengthLong ();

        if ( length > 0 )
        {
            job.beginWork ( String.format ( "Downloading %s", Strings.bytes ( length ) ), length );
        }

        // manual copy
        final byte[] buffer = new byte[COPY_BUFFER_SIZE];
        int rc;
        while ( ( rc = in.read ( buffer ) ) > 0 )
        {
            out.write ( buffer, 0, rc );
            job.worked ( rc );
        }

        job.complete ();

        // get the name inside here, since this will properly clean up if something fails

        name = makeName ( cfg, url, con );
        if ( name == null )
        {
            throw new IllegalStateException ( String.format ( "Unable to determine name for %s", cfg.getUrl () ) );
        }
    }
    catch ( final Exception e )
    {
        logger.debug ( "Failed to download", e );
        Files.deleteIfExists ( file );
        throw e;
    }

    context.scheduleImport ( file, name );
}
 
Example 16
Source File: ModDownloadTask.java    From SmartModInserter with GNU Lesser General Public License v3.0 4 votes vote down vote up
@Override
protected Mod call() throws Exception {
    try {
        updateMessage("Preparing");
        updateProgress(-1, 100);
        updateMessage("Connecting to server");
        if (expectedName != null) {
            updateTitle("Download " + expectedName + (expectedVersion != null ? "#" + expectedVersion.toString() : ""));
        } else {
            updateTitle("Download: " + url.toString());
        }
        URLConnection conn = url.openConnection();
        conn.setConnectTimeout(CONNECT_TIMEOUT);
        conn.setReadTimeout(READ_TIMEOUT);
        conn.connect();
        InputStream stream = conn.getInputStream();
        long contentLength = conn.getContentLengthLong();
        updateProgress(0, contentLength);
        downloadingFile = Datastore.getInstance().getFMMDir().resolve("downloads").resolve("Download-tmp-" + random.nextLong() + ".part");
        Files.createDirectories(downloadingFile.getParent());
        FileOutputStream writer = new FileOutputStream(downloadingFile.toFile());
        byte buf[] = new byte[DOWNLOAD_BUFFER_SIZE];
        int read = 0;
        long totalRead = 0;
        updateMessage("Downloading");
        started = System.currentTimeMillis();
        int currentReadingSpeed = 32;
        do {
            if (isCancelled()) {
                updateMessage("Cancelled");
                failed();
                return null;
            }
            read = stream.read(buf, 0, currentReadingSpeed);

            if (currentReadingSpeed < DOWNLOAD_BUFFER_SIZE) {
                currentReadingSpeed *= 2;
            }
            if (read > 0) {
                totalRead += read;
                writer.write(buf, 0, read);
                if (System.currentTimeMillis() - lastUpdate > 200) {
                    updateMessage("Downloading: " + Util.formatBytes(totalRead) + " / " + Util.formatBytes(contentLength));
                    updateProgress(totalRead, contentLength);
                    lastUpdate = System.currentTimeMillis();
                }
            }
        } while (read > 0);
        ended = System.currentTimeMillis();
        updateMessage("Took " + (ended - started) + " ms to download");
        updateProgress(totalRead, contentLength);
        updateMessage("Installing");
        Mod mod = ModpackDetectorVisitor.parseMod(downloadingFile);
        if (mod == null) {
            updateMessage("File was not a mod");
            failed();
        } else {
            if (expectedName != null) {
                if (!expectedName.equals(mod.getName())) {
                    updateMessage("This file does not contain the expected mod");
                    failed();
                }
            }
            if (expectedVersion != null) {
                if (!expectedVersion.equals(mod.getVersion())) {
                    updateMessage("This file does not contain the expected version of the mod");
                    failed();
                }
            }
            mod.setPath(Datastore.getInstance().getFMMDir().resolve("mods").resolve(mod.getName() + "_" + mod.getVersion().toString() + ".zip"));
            updateMessage("Done");
            succeeded();
            return mod;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
 
Example 17
Source File: ProgressURLDownloader.java    From opoopress with Apache License 2.0 4 votes vote down vote up
private void downloadInternal(URL url, File destination) throws IOException {
    OutputStream out = null;
    URLConnection conn;
    InputStream in = null;
    try {
        //URL url = address.toURL();
        conn = url.openConnection();

        //user agent
        final String userAgentValue = calculateUserAgent();
        conn.setRequestProperty("User-Agent", userAgentValue);

        //do not set gzip header if download zip file
        if (useGzip) {
            conn.setRequestProperty("Accept-Encoding", "gzip");
        }

        if (!useCache) {
            conn.setRequestProperty("Pragma", "no-cache");
        }

        in = conn.getInputStream();
        out = new BufferedOutputStream(new FileOutputStream(destination));

        copy(in, out);

        if(checkContentLength) {
            long contentLength = conn.getContentLengthLong();
            if (contentLength > 0 && contentLength != destination.length()) {
                throw new IllegalArgumentException("File length mismatch. expected: "
                        + contentLength + ", actual: " + destination.length());
            }
        }

        if(keepLastModified) {
            long lastModified = conn.getLastModified();
            if (lastModified > 0) {
                destination.setLastModified(lastModified);
            }
        }
    } finally {
        logMessage("");
        if (in != null) {
            in.close();
        }
        if (out != null) {
            out.close();
        }
    }
}
 
Example 18
Source File: Downloader.java    From appengine-plugins-core with Apache License 2.0 4 votes vote down vote up
/** Download an archive, this will NOT overwrite a previously existing file. */
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();
}
 
Example 19
Source File: AbstractFileResolvingResource.java    From java-technology-stack with MIT License 4 votes vote down vote up
@Override
public boolean exists() {
	try {
		URL url = getURL();
		if (ResourceUtils.isFileURL(url)) {
			// Proceed with file system resolution
			return getFile().exists();
		}
		else {
			// Try a URL connection content-length header
			URLConnection con = url.openConnection();
			customizeConnection(con);
			HttpURLConnection httpCon =
					(con instanceof HttpURLConnection ? (HttpURLConnection) con : null);
			if (httpCon != null) {
				int code = httpCon.getResponseCode();
				if (code == HttpURLConnection.HTTP_OK) {
					return true;
				}
				else if (code == HttpURLConnection.HTTP_NOT_FOUND) {
					return false;
				}
			}
			if (con.getContentLengthLong() > 0) {
				return true;
			}
			if (httpCon != null) {
				// No HTTP OK status, and no content-length header: give up
				httpCon.disconnect();
				return false;
			}
			else {
				// Fall back to stream existence: can we open the stream?
				getInputStream().close();
				return true;
			}
		}
	}
	catch (IOException ex) {
		return false;
	}
}
 
Example 20
Source File: AbstractFileResolvingResource.java    From spring-analysis-note with MIT License 4 votes vote down vote up
@Override
public boolean exists() {
	try {
		URL url = getURL();
		if (ResourceUtils.isFileURL(url)) {
			// Proceed with file system resolution
			return getFile().exists();
		}
		else {
			// Try a URL connection content-length header
			URLConnection con = url.openConnection();
			customizeConnection(con);
			HttpURLConnection httpCon =
					(con instanceof HttpURLConnection ? (HttpURLConnection) con : null);
			if (httpCon != null) {
				int code = httpCon.getResponseCode();
				if (code == HttpURLConnection.HTTP_OK) {
					return true;
				}
				else if (code == HttpURLConnection.HTTP_NOT_FOUND) {
					return false;
				}
			}
			if (con.getContentLengthLong() > 0) {
				return true;
			}
			if (httpCon != null) {
				// No HTTP OK status, and no content-length header: give up
				httpCon.disconnect();
				return false;
			}
			else {
				// Fall back to stream existence: can we open the stream?
				getInputStream().close();
				return true;
			}
		}
	}
	catch (IOException ex) {
		return false;
	}
}