ProgressMonitorInputStream不会弹出

时间:2014-12-03 10:55:24

标签: java stream

这是一个服务器,它从客户端接收文件。它接收完整的文件但进度条没有显示。我正在使用ProgressInputStream。这是我使用SwingWorker为进度条创建新线程的代码段。

SwingWorker<Void,Void> worker = new SwingWorker<Void,Void>()
        {
            protected Void doInBackground()
            {
                try {
                    ss = new ServerSocket(port);
                    s = ss.accept();
                    bytes = new byte[1024];
                    FileOutputStream fos = new FileOutputStream(new File(FileName));
                    DataInputStream dis = new DataInputStream(s.getInputStream());
                    pmis = new ProgressMonitorInputStream(frame,"Receiving",dis);
                    pmis.getProgressMonitor().setMillisToPopup(10);

                    while(pmis.read(bytes) > 0)
                    {
                        fos.write(bytes);
                    }


                    ss.close();
                    fos.close();




                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }
        };
        worker.execute();

任何帮助将不胜感激。对不起,我的英语不好。感谢您的期待。

1 个答案:

答案 0 :(得分:0)

它只会弹出'如果需要一段时间'。

NB:

  1. 您的复制循环错误。它应该是:

    while ((count = pmis.read(bytes)) > 0)
    {
        fos.write(bytes, 0, count);
    }
    
  2. 其中count显然是int

    1. 您不需要DataInputStream