我正在尝试跟踪压缩进度的进度。 ATM我这样做是这样的:跟踪复制文件的进度
public static void compressGzipTest(final OutputStream os, final File source) throws CompressorException,
IOException
{
final CountingInputStream cis = new CountingInputStream(new FileInputStream(source));
final GzipCompressorOutputStream gzipOut = (GzipCompressorOutputStream) new CompressorStreamFactory()
.createCompressorOutputStream(CompressorStreamFactory.GZIP,os);
new Thread() {
public void run()
{
try
{
long fileSize = source.length();
while (fileSize > cis.getBytesRead())
{
Thread.sleep(1000);
System.out.println(cis.getBytesRead()/(fileSize/100.0));
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}.start();
IOUtils.copy(cis,gzipOut);
}
这工作得很好,但我需要的螺纹,它提供有关不以这种方法来实现进度的反馈,但称这是(为了创造东西的时候就像android设备上的进度条)。所以这更像是一个架构问题。任何想法,关于如何解决?
我解决它的时刻通过传递InputStream作为参数。但是我是否正确地做到了这一点,publishProgress/onProgressUpdate会默认处理我方法的进度,还是必须实施如何接收进度反馈? – JohnPlata
请看我编辑的答案,在那里你可以看到一个关于它的例子。 – R4ng3LII