我正在开发一个使用 http 连接下载文件的项目。我在下载过程中显示一个带有进度条状态的水平进度条。我的功能如下所示:
.......
try {
InputStream myInput = urlconnect.getInputStream();
BufferedInputStream buffinput = new BufferedInputStream(myInput);
ByteArrayBuffer baf = new ByteArrayBuffer(capacity);
int current = 0;
while((current = buffinput.read()) != -1) {
baf.append((byte) current);
}
File outputfile = new File(createRepertory(app, 0), Filename);
FileOutputStream myOutPut = new FileOutputStream(outputfile);
myOutPut.write(baf.toByteArray());
...
}
我事先知道我的文件的大小,所以我需要在下载期间检索大小(在我的 while 块中)。因此,我将能够确定进度条的状态。
progressBarStatus = ((int) downloadFileHttp(url, app) * 100)/sizefile;
long downloadFileHttp(.., ..) 是我的函数的名称。
我已经尝试使用 outputfile.length 来检索它,但他的值为“1”,也许这是我尝试下载的文件数。
有什么办法可以弄清楚吗?
更新 1
我没有任何线索可以让我弄清楚这一点。目前我有一个水平进度条,它只显示 0 和 100% 的中间值。我考虑另一种方法。如果我知道我的 wifi 的速率和文件的大小,我可以确定下载的时间。
我知道我可以检索我的 Wifi 连接的信息和要下载的文件的大小。
有没有人已经工作过或有线程?