嗨,大家好,我使用apache.commons.net从SD卡我的文件上传到由文件创建吉拉一个FTP服务器。 然而,所有我想做的就是显示进度给用户。 请你帮助我好吗? 这里是我的代码:
http://pastie.org/4433482
嗨,大家好,我使用apache.commons.net从SD卡我的文件上传到由文件创建吉拉一个FTP服务器。 然而,所有我想做的就是显示进度给用户。 请你帮助我好吗? 这里是我的代码:
http://pastie.org/4433482
如果万一你永远解决不了你的问题呢。 我认为这个问题是此行publishProgress内
((int) ((totalBytesTransferred/file.length())*100))
而是试试这个
publishProgress((int) ((totalBytesTransferred * 100)/file.length()))
没有与此行的一个问题:
publishProgress((int) ((totalBytesTransferred/file.length())*100));
由于totalBytesTransferred是长和File.length()返回长,整数除法将被执行。 因此,这条线将返回零,直到totalBytesTransferred等于file.length()。 然后,它会返回100。
你可以投totalBytesTransferred将这样得到的百分比之前增加一倍:
publishProgress((int) (((double)totalBytesTransferred/file.length())*100));
在你贴的322线。
org.apache.commons.net.io.Util.copyStream(stO, stD, ftpClient.getBufferSize(),
CopyStreamEvent.UNKNOWN_STREAM_SIZE,
new CopyStreamAdapter() {
public void bytesTransferred(
long totalBytesTransferred,
int bytesTransferred,
long streamSize) {
// Your progress Control code here
Log.d("CopyStreamAdapter", "bytesTransferred(...) - " +
totalBytesTransferred + "; " +
bytesTransferred + "; " +
streamSize);
publishProgress((int) ((totalBytesTransferred/file.length())*100));
}
}
);
这我怀疑就是它的失败! 如果你没有得到字符串“CopyStreamAdapter”任何logcat的,这意味着你在这个处理程序不被解雇!