【发布时间】:2011-09-11 18:52:59
【问题描述】:
我需要将文件上传到服务器并监控它的进度。 我需要通知每次发送多少字节。
例如在下载的情况下我有:
HttpURLConnection connection = (HttpURLConnection) m_url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
while ((currentBytes = stream.read(byteBuffer)) > 0) {
totalBytes+=currentBytes;
//calculate something...
}
现在我需要为上传做同样的事情。但如果使用
OutputStreamWriter stream = new OutputStreamWriter(connection.getOutputStream());
stream.write(str);
stream.flush();
我无法收到任何进度通知,关于发送了多少字节(看起来像是自动操作)。
有什么建议吗?
谢谢
【问题讨论】:
-
很遗憾你没有得到这个问题的真正答案,我很好奇......
-
似乎 HttpURLConnection 不是该任务的正确对象。它对输出是非阻塞的,所以我无法用它来衡量性能。我现在正在尝试使用套接字。
-
是的,对于套接字,您可以使用 getSendBufferSize 来确定它们何时发送数据。
-
它不是'非阻塞输出'。 @MirroredFate getSendBufferSize() 不能“确定它们何时发送数据”。它返回一个固定的值,除非您自己更改它。它不会随发送进度而变化。