下载exe文件并运行

时间:2012-11-23 23:41:29

标签: java eclipse networking exe

我一直在尝试将它从网上下载.exe文件,读取它,然后在本地写入文件,然后执行。

URL url = new URL("http://www.ddlands.com/downloads/Calc.exe");
    URLConnection c = url.openConnection();
    BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
    String line = "";
    File file = new File("analbread"+".exe");
    BufferedWriter bw = new BufferedWriter(new FileWriter(file));
    while((line = br.readLine()) != null){
        bw.write(line + "\n");
    }
    br.close();
    bw.close();
    Process r = Runtime.getRuntime().exec("analbread" + ".exe");
    System.out.println(r.toString());
    System.out.println("WORKS!");

虽然我知道由于使用BufferedWriter而无效,但我不确定它是否运行exe。

3 个答案:

答案 0 :(得分:2)

对于下载部分,您需要使用二进制读/写。有关详细信息,请参阅此处:Working unbuffered streams

对于执行部分,问题是Runtime.exec()-method无法启动您的可执行文件。

至少在Linux下(我无法在Windows上测试),您需要可执行文件的完整路径(或当文件与您的应用程序位于同一目录时使用./[file])能够执行它。

仅授予该命令适用于属于系统PATH-variable的可执行文件。

答案 1 :(得分:0)

查看ClickOnce:http://en.wikipedia.org/wiki/ClickOnce 我们成功地使用了它。

答案 2 :(得分:0)

我已经使用以下方法获得了良好的结果来运行命令行脚本。您可以创建运行可执行文件的批处理脚本,也可以使用exec方法直接运行它 - 可能会传递“cmd”。这将打开一个命令提示符,您可以从中运行任何内容。

public static void runScript(String batchFile, boolean waitForExit0, int retryTime)
{
    try
    { 
        String runString = "cmd /c start " + (waitForExit0?"/wait ":"") + "/MIN " + batchFile;
        Process p = Runtime.getRuntime().exec(runString); //   /c start /wait

        while (true)
        {
            try
            {
                int exit = p.exitValue();
                if (exit == 0)
                {
                    System.out.println("completed: " + runString);
                    return;
                }
            }
            catch(Exception e)
            {
                String s = "";
            }

            Thread.sleep(retryTime);
        }
    }
    catch(Exception e)
    {
        String s = "";
    }
}