下载之前如何知道文件的大小?

Cri*_*ian 32 android download

我必须下载一个文件,我正在使用这个代码,这基本上是一个AsyncTask用于更新进度条的代码.但是,因为我不知道文件大小是多少,所以我一直不得不使用微调器进度条.那么,如何在开始下载之前获取文件大小以便我可以使用正常的进度条?

ref*_*log 73

你可以得到一个名为你Content-Length的HTTP响应对象的标题,这将给你文件的长度.但是,您应该注意,某些服务器不会返回该信息,而了解实际大小的唯一方法是从响应中读取所有内容.

例:

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


and*_*per 16

你通常可以使用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)
  {
  }
Run Code Online (Sandbox Code Playgroud)

请注意我可以是任何字符串,所以使用try catch,如果它是-1,空或null,则意味着您无法知道文件的大小,因为服务器不允许它.

  • 实际上你可以,它大概是2GB. (5认同)