¿Cómo saber el tamaño de un archivo antes de descargarlo?

Tengo que descargar un archivo y estoy usando este código , que es básicamente una AsyncTask que debe actualizar una barra de progreso. Pero, como no sé cuál es el tamaño del archivo, he tenido que usar la barra de progreso de la ruleta. Entonces, ¿cómo puedo obtener el tamaño del archivo antes de comenzar a descargarlo para poder usar una barra de progreso normal?

puede obtener un encabezado llamado Content-Length del objeto HTTP Response que obtiene, esto le dará la longitud del archivo. Sin embargo, debe tener en cuenta que algunos servidores no devuelven esa información, y la única forma de conocer el tamaño real es leer todo desde la respuesta.

Ejemplo:

 URL url = new URL("http://server.com/file.mp3"); URLConnection urlConnection = url.openConnection(); urlConnection.connect(); int file_size = urlConnection.getContentLength(); 

generalmente puede usar getContentLength , pero lo mejor es que obtenga la longitud usted mismo (ya que puede omitir el valor máximo del entero).

simplemente analice el valor del encabezado de longitud del contenido usted mismo. Mejor analizarlo siempre.

ejemplo:

 final URL uri=new URL(...); URLConnection ucon; try { ucon=uri.openConnection(); ucon.connect(); final String contentLengthStr=ucon.getHeaderField("content-length"); //... } catch(final IOException e1) { } 

tenga en cuenta que puedo ser cualquier cadena, así que use try catch, y si es -1, vacía o nula, significa que no puede saber el tamaño del archivo ya que el servidor no lo permite.