2011-05-14 35 views
0

我试图从网站上下载图片......它在本地很好用......但是当applet通过网络浏览器运行时,它会被切断。例如,它下载的图像很好,但在460-500左右...图像下载突然停止。Java - url超时

下面是我使用的是什么:

   for (int i = 0; i < NUM_TILES; i++) { 

         try { 
       System.out.println("Downloading tile " + i + " of "+NUM_TILES); 
       File outputFileLocation = new File (System.getenv("APPDATA") + "\\.mystik\\tiles\\t"+i+".png");    
       String imgURL="line_tile/t"+i+".png"; 
       URL urlItem = new URL(imgURL); 
       Image imageBR = ImageIO.read(urlItem); 
       BufferedImage cpimg=(BufferedImage) imageBR; 
       ImageIO.write(cpimg, "png", outputFileLocation); 
         } catch (MalformedURLException e1) { 
          e1.printStackTrace(); 
         } catch (IOException ex) { 
          ex.printStackTrace(); 
         } 
       } 
       System.out.println("Tiles downloaded!"); 

为什么切断?

回答

0

为什么切断?

这很难说。您是否在Web浏览器中检查了Java控制台?你得到一个异常堆栈跟踪?

一种可能性是浏览器已经决定这个applet花了太长时间......但我只是在猜测。

+0

我认为你可能是正确的Stephen ......并且通常的补救措施是在工作线程上执行下载(或实际上任何“潜在的长时间运行的进程”),在后台释放EDT以响应浏览器......所以它不会因为它在“死亡”的假设而杀死你的applet,因为它在timout限制内“没有响应”。 – corlettk 2011-05-14 07:12:32

+0

是的,我检查了控制台。它在大约400后随机停止并加载正常。缺少的瓷砖显示为白色。 – nn2 2011-05-14 07:21:17

+0

所以,你说的是在加载tile开始之前做'Thread.sleep(10000)'? – nn2 2011-05-14 07:22:01