文件打开问题

时间:2014-06-14 08:29:42

标签: java netbeans file-io

对于我的A2计算课程,我需要打开并使用来自Java程序的媒体播放器或itunes。我当前的代码是这样的: -

    package random.file.opener; 

    import java.io.IOException;

    public class RandomFileOpener {
    public static void main(String args[]) throws IOException {
        Runtime.getRuntime().exec("C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe");
    //this is to try to run internet explorer as a proof of concept
}
}

然而,这会引发此错误: -

    Exception in thread "main" java.io.IOException: Cannot run program "iexplore.exe" (in directory "C:\Users\Program Files (x86)\Internet Explorer\iexplore.exe"): CreateProcess error=267, The directory name is invalid
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at random.file.opener.RandomFileOpener.main(RandomFileOpener.java:19) Caused by: java.io.IOException: CreateProcess error=267, The directory name is invalid
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:376)
at java.lang.ProcessImpl.start(ProcessImpl.java:136)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 1 more

Java结果:1

编辑:但是,我能够运行

    package random.file.opener; 

    import java.io.IOException;

    public class RandomFileOpener {
    public static void main(String args[]) throws IOException {
        Runtime.getRuntime().exec("C:\\Windows\\System32\\taskmgr.exe");

}
}

哪个运行得很完美..

是否有一种特定的方法来处理此错误,因为我的代码似乎是“正确的”但这个错误似乎一直在困扰我。 非常感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

如果你想从你的java应用程序启动一些可执行文件,那么建议你使用ProccessBuilder,在那里你可以避免路径中有空格的问题,检查这个answer它可能有帮助你在使用ProccessBuilder时。

当您必须从Java程序打开文件,浏览器或任何GUI应用程序时,您可以使用调用操作系统中默认应用程序的Desktop类来打开特定文件,例如:

import java.awt.Desktop;
import java.io.File;
public class MyClass {
 public static void main(String[] args) throws IOException {
        File file = new File("myFile.txt");
        Desktop desktop = Desktop.getDesktop();
        if(file.exists()) desktop.open(file);

}
}

答案 1 :(得分:0)

我使用了与你相同的代码。复制它并在这里创建了一个类。对我的iexplorer.exe

的路径做了一些修改

但在我的结尾它运行得很好。

我想你的iexplorer.exe路径存在一些问题。

请确保您将iexplorer.exe置于代码中提及的相同路径中。

答案 2 :(得分:0)

如果我测试你的代码,它似乎工作

也许您可以尝试运行64位IE,只需删除(x86)

即可
Runtime.getRuntime().exec("C:\\Program Files\\Internet Explorer\\iexplore.exe");

但我建议您导航到“程序文件夹”并搜索Internet Explorer,然后复制路径