【发布时间】:2010-08-12 00:46:39
【问题描述】:
我想为 FTP 下载创建一个进度条。我下载文件的服务器隐藏了它的所有目录和文件。我想显示下载进度。有什么办法可以获取文件大小吗?这是我当前的代码:
FTPclient = new FTPClient();
FTPclient.setListHiddenFiles(true);
FTPclient.connect(hostPart);
FTPclient.login(userName, passWord);
FTPclient.setFileType(FTP.BINARY_FILE_TYPE);
InputStream instream = FTPclient.retrieveFileStream(pathExcludingHostIncludingFirstSlash);
int l;
byte[] tmp = new byte[2048];
int updateCounter = 0;
int bytesDownloaded = 0;
while ((l = instream.read(tmp)) != -1) {
fos.write(tmp, 0, l);
bytesDownloaded+=2048;
updateCounter++;
if(updateCounter==3){
kilobytesDownloaded=(bytesDownloaded / 1024);
publishProgress((String[])null);
updateCounter=0;
}
【问题讨论】:
-
您的代码假定每次读取都是 2048 字节。这不能保证,除非您保证您的文件甚至是 2048 字节的倍数,否则最终读取几乎肯定不会是这样。我会推荐
bytesDownloaded += l。
标签: java android ftp download progress-bar