编程语言
首页 > 编程语言> > 如何在ICEfaces中显示Java文件复制操作的进度?

如何在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