Как узнать размер файла перед его загрузкой?

Мне нужно загрузить файл, и я использую этот код , который в основном представляет собой AsyncTask , предназначенный для обновления индикатора выполнения. Но, так как я не знаю, в каком размере файла мне нужно использовать индикатор выполнения spinner. Итак, как я могу получить размер файла, прежде чем загружать его, чтобы я мог использовать нормальный индикатор выполнения?

Solutions Collecting From Web of "Как узнать размер файла перед его загрузкой?"

Вы можете получить заголовок с именем Content-Length из объекта HTTP Response, который вы получите, это даст вам длину файла. Вы должны заметить, что некоторые серверы не возвращают эту информацию, и единственный способ узнать фактический размер – это прочитать все из ответа.

Пример:

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

Вы обычно можете использовать getContentLength , но лучше всего получить длину самостоятельно (поскольку она может обойти максимальное значение целого).

Просто проанализируйте значение заголовка содержимого. Лучше разобрать его так долго.

пример:

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

Обратите внимание, что я могу быть любой строкой, поэтому используйте try catch, а если это -1, пустой или null, это означает, что вы не можете знать размер файла, так как сервер не разрешает его.