我有一个ICEfaces Web应用程序,需要执行文件复制操作并向用户显示进度条.
目前,复制是通过调用’cpio’来完成的,该操作在操作完成之后才能使Java代码进展.虽然可以使用Java来监视写入的字节数与读取的字节数以估计复制进度,但我认为如果我用Java编写实际的复制操作,可能会有一个更简单的解决方案.我仍然会使用’cpio’进行存档,但实际的副本将由Java类执行.
我在搜索中发现的大多数帮助都与progressMonitor有关,它包含一个swing组件,我不确定它能做我想做的事情.我只需要一个整数/两倍的进度,我可以将其作为100%的百分比提供给我的JSF进度条组件.
解决方法:
我不知道ICEFaces,但这里是如何在java中复制文件并监视命令行上的进度:
import java.io.*;
public class FileCopyProgress {
public static void main(String[] args) {
System.out.println("copying file");
File filein = new File("test.big");
File fileout = new File("test_out.big");
FileInputStream fin = null;
FileOutputStream fout = null;
long length = filein.length();
long counter = 0;
int r = 0;
byte[] b = new byte[1024];
try {
fin = new FileInputStream(filein);
fout = new FileOutputStream(fileout);
while( (r = fin.read(b)) != -1) {
counter += r;
System.out.println( 1.0 * counter / length );
fout.write(b, 0, r);
}
}
catch(Exception e){
System.out.println("foo");
}
}
}
您必须以某种方式更新进度条而不是System.out.println().
我希望这会有所帮助,但也许我不明白你的问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。