如何在ICEfaces中显示Java文件复制操作的进度?
作者:互联网
我有一个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().
我希望这会有所帮助,但也许我不明白你的问题.
标签:java,bash,jsf,progress-bar,icefaces 来源: https://codeday.me/bug/20190613/1232799.html