我必须下载一个文件,我正在使用这个代码,这基本上是一个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,则意味着您无法知道文件的大小,因为服务器不允许它.
| 归档时间: |
|
| 查看次数: |
39099 次 |
| 最近记录: |