0
이것은 서버이며 클라이언트로부터 파일을 수신합니다. 전체 파일을 수신하지만 진행 표시 줄이 나타나지 않습니다. ProgressInputStream을 사용하고 있습니다. 다음은 진행 막대를위한 새로운 스레드를 생성하기 위해 SwingWorker를 사용하는 코드 부분입니다.ProgressMonitorInputStream이 팝업되지 않습니다.
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();
어떤 도움을 주시면 감사하겠습니다. 내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다. 기대해 줘서 고마워.
미안하지만 팝업하지 않았습니다. 나는 이미 700+ MB 파일을 보내려고했지만 행운이 없다. 또한 이미 팝업 시간을 10 밀리 초로 설정했습니다. 'pmis.getProgressMonitor(). setMillisToPopup (10);' – essaji
파일의 크기가 얼마인지 미리 알기 원하면'setMaximum()'을 대신 호출 해보십시오. – EJP
문제는 FileOutputStream을 팝업 진행률 표시 줄에 표시해야하지만 데이터가이 스트림을 통해 저장되기 때문에 FileOutputStream을 닫을 수 없다는 것입니다. 나는이 문제에 대한 해결책을 찾지 못한다. – essaji