2017-02-25 12 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

Official Info)寿をスレッドを使用する必要があります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

あなたはおそらく、

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

関連する問題