2017-02-25 74 views
-1

我是新手。我有一个程序,我点击一个按钮并开始下载电影,但是当它下载它时,我什么也做不了,所以程序将关闭或仍然冻结(我要下载的文件是2GB。我的下载代码如下所示:文件的后台下载

所以我希望我可以在我的程序中做一些事情,如果有人知道我可以如何添加进度条,那么我会看到下载过程如何进行。

if (!"Anschauen".equals(down.getText())) { 
    try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("gedown.txt", true)))) { 
     bw.write(titles.getText()); 
     bw.newLine(); 

     String fileName = (titles.getText()+".mp4"); //The file that will be saved on your computer 
     URL link = new URL("http://s180.zerocdn.to/dl/63974fae7073944b11a7cf3e72e36cec/58b0d089/mm59cc5df499f1c21806495fea50072438.mp4"); //The file that you want to download 

     switch (titles.getText()) { 
      case "doesnotmatter": 
       link = new URL("doesnotmatter"); 
       break; 
      case "doesnotmatter": 
       link = new URL("doesnotmatter"); 
       break; 
      case "doesnotmatter": 
       link = new URL("doesnotmatter"); 
       break; 
      case "doesnotmatter": 
       link = new URL("doesnotmatter"); 
       break; 
      case "doesnotmatter": 
       link = new URL("doesnotmatter"); 
       break; 
      case "doesnotmatter": 
       link = new URL("doesnotmatter"); 
       break; 
     } 

     ByteArrayOutputStream out; 
     try (InputStream in = new BufferedInputStream(link.openStream())) { 
      out = new ByteArrayOutputStream(); 
      byte[] buf = new byte[1024]; 
      int n = 0; 
      while (-1!=(n=in.read(buf))) 
      { 
       out.write(buf, 0, n); 
      } 
      out.close(); 
     } 
     byte[] response = out.toByteArray(); 

     FileOutputStream fos = new FileOutputStream(fileName); 
     fos.write(response); 
     fos.close(); 
    } 
} 
else { 
    System.out.println("Noch nicht fertig"); 
} 
+0

你可能守ld学习线程的概念(https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html和https://docs.oracle.com/javase/tutorial/essential/concurrency /procthread.html) – SergGr

回答

0

您应该使用一个线程(Official Info

public void run() { 
    //This will be called when the thread starts. 
    //Put the download code right here. 
} 

public static void main(String args[]) { 
    //The class must implement Runnable. 
    Thread thread = new Thread(this, "Thread's name eg. Download Thread"); 
    thread.start(); 
} 
+0

将所有下载代码放在一个单独的类中,并将其作为线程运行。然后,使用get方法返回进度。 – wdavies973