我需要一些帮助JProgressBar组件.我的程序使用
java.nio FileChannels将文件从一个地方复制到另一个地方.实际的复制方法是transferFrom().
我现在有两个问题
>如何监视FileChannels的传输进度?我发现的所有教程使用传统的java.io InputStreams,并在循环输入流时增加进度int.
>我的复制方法(FileChannel方法)封装在一个单独的方法中,该方法由通过源文件夹和目标文件夹进行迭代的其他方法调用,然后为每个文件调用FileChannel方法.
如何为完整的复制机制实现ProgressBar?
那么我应该早点阅读常见问题,所以我想我必须编辑我的初始帖子,而不是评论答案,对吧?
好的,这是我到目前为止所做的.
正如jambjo建议的(感谢方式),transferFrom()方法现在循环.
BTW:有没有一个优选的块大小,还是取决于我的进度条的粒度,就像EJP所说的那样?
这是我的代码片段:
while (position < size) {
position += destination.transferFrom(source, position, chunkSize);
current = (position/size)*100;
System.out.println(current);
}
不幸的是,“当前”值在循环中保持为0,我不知道为什么.
我错过了什么吗?
再次感谢jambjo!我非常感谢您的投入!
现在,单个文件的进度监视工作,让我们解决我的第二个问题.
我想,不,我不得不监视不仅一个文件的进度,而是一堆文件.
我的主要复制方法遍历各种目录,并通过调用实际的传输方法来复制适当的文件.
所以复制方法不会传输文件,他们只是选择实际传输方式的文件.