ProgressMonitorInputStream 不会弹出



这是一个服务器,它从客户端接收文件。它接收完整的文件,但不显示进度条。我正在使用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. 您的复制循环是错误的。它应该是:

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

count显然是一个int.

  1. 你不需要DataInputStream.

相关内容

  • 没有找到相关文章

最新更新