【发布时间】:2010-11-23 06:58:57
【问题描述】:
因此,我将文件数据提供给采用Reader 的 API,并且我想要一种报告进度的方法。
编写一个包装FileInputStream的FilterInputStream实现似乎应该很简单,跟踪读取的字节数与总文件大小,并触发一些事件(或者,调用一些@987654324 @method) 报告部分进度。
(或者,它可以报告读取的绝对字节数,而其他人可以进行数学运算——在其他流式传输情况下可能更普遍有用。)
我知道我以前见过这个,我什至可能以前做过,但是我找不到代码而且我很懒。有没有人把它放在身边?或者有人可以提出更好的方法吗?
一年(和一点)之后……
我根据 Adamski 在下面的回答实施了一个解决方案,它确实有效,但经过几个月的使用,我不推荐它。当您有大量更新时,触发/处理不必要的进度事件会成为巨大的成本。基本的计数机制很好,但最好让关心进度的人来投票,而不是把它推给他们。
(如果您知道总大小,则可以尝试仅在每 > 1% 的变化或其他情况下触发一个事件,但这并不值得麻烦。而且通常情况下,您不这样做。)
【问题讨论】:
标签: java inputstream java-io