簡體   English   中英

如何從Java執行Java?

[英]How do I Execute Java from Java?

我有這個DownloadFile.java並按需下載文件:

import java.io.*;
import java.net.URL;

public class DownloadFile {    
    public static void main(String[] args) throws IOException {
        String fileName = "setup.exe";
            // The file that will be saved on your computer
        URL link = new URL("http://onlinebackup.elgiganten.se/software/elgiganten/setup.exe");
            // The file that you want to download

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

        FileOutputStream fos = new FileOutputStream(fileName);
        fos.write(response);
        fos.close();
        // End download code

        System.out.println("Finished");
    }
}

我想從Gui.java的鼠標事件執行此Gui.java

private void jLabel17MouseClicked(java.awt.event.MouseEvent evt){

}   

我該怎么做呢?

您當前的方法是靜態方法,可以,但是它提取的所有數據都緊緊地保存在main方法中,從而防止了其他類使用它,但是幸運的是,可以對此進行更正。

我的建議:

  • 重新編寫您的DownloadFile代碼,這樣它不僅是靜態的main方法,而且可以被其他類輕松調用,並且可以從目標文件中返回數據。 這樣,外部類可以調用該方法,然后接收該方法提取的數據。
  • 給它一個String參數,它將允許調用代碼傳遞URL地址。
  • 給它一個文件參數,該文件應向其寫入數據。
  • 如果調用程序需要此數據,請考慮使其返回數據(字節數組?)。
  • 或者,如果不需要返回數據,則可能返回布爾值以指示下載是否成功。
  • 確保您的方法拋出了需要拋出的所有異常(例如IO和URL異常)。
  • 另外,如果要由Swing GUI調用此代碼,請確保在后台線程(例如在SwingWorker中)調用此類型的代碼,以使該代碼不會占用Swing事件線程,從而導致GUI凍結一個時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM