可以确定要下载的文件大小吗?

Adi*_*ain 6 java android android-asynctask

我目前有以下代码,它读取位于Web上的文件并将其写入手机上的文件:

InputStream inputStream = new URL(sourceFileWebAddress).openStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
FileOutputStream fileOutputStream = new FileOutputStream(targetFile);

int count;
byte buffer[] = new byte[1024];

while ((count = bufferedInputStream.read(buffer, 0, buffer.length)) != -1)
  fileOutputStream.write(buffer, 0, count);
Run Code Online (Sandbox Code Playgroud)

有没有人知道是否有可能(使用上面的设置或其他方式)确定在开始下载之前要读取的总字节数(为了在下载过程中向用户发布百分比进度)?

Ed.*_*Ed. 8

使用getContentLength方法URLConnection

URL url = new URL(sourceFileWebAddress);
URLConnection connection = url.openConnection();
connection.connect();

int fileLenth = connection.getContentLength();

InputStream inputStream = url.openStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
Run Code Online (Sandbox Code Playgroud)

  • 如果服务器不支持此内容长度或由于某种原因文件大小未知,则内容长度可能为-1. (5认同)