使用Java应用程序打开文件

时间:2014-05-21 08:14:14

标签: java file

我尝试使用Runtime打开文件。这类似于打开Windows命令提示符,然后执行命令。

以下是代码:

import java.io.IOException;

public class OpenFile {

    public static void main(String[] args) {
        String fileName = "E:\\Myfile.txt";
        try {
            Runtime rt = Runtime.getRuntime();
            rt.exec(new String[]{"cmd.exe", "/c", "start"});
            rt.exec(new String[]{fileName});
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

}

命令提示符已成功打开。但文件Myfile.txt没有打开。我在控制台中收到以下错误:

java.io.IOException: CreateProcess: E:\Myfile.txt error=193
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
    at java.lang.ProcessImpl.start(ProcessImpl.java:30)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)
    at java.lang.Runtime.exec(Runtime.java:591)
    at java.lang.Runtime.exec(Runtime.java:464)
    at OpenFile.main(OpenFile.java:10)

如何成功打开文件?

2 个答案:

答案 0 :(得分:3)

不是真正的答案,但我认为描述当前版本的应用程序究竟发生了什么非常重要。

在你的代码的这一部分;

        rt.exec(new String[]{"cmd.exe", "/c", "start"});
        rt.exec(new String[]{fileName});

您正在执行外部命令。引用这个问题,

  

类似于打开windows命令提示符,然后执行   命令

你需要意识到的是,无论你在字符串中给出什么,都会被执行。它没有排队等等。因此,重新读取代码,您要求程序执行2个不同的命令。第一个看起来像;

cmd.exe /c start

如果在Windows命令提示符下运行,则执行没有问题。程序尝试执行的第二个“命令”如下所示;

E:\Myfile.txt

尝试在命令提示符中键入它 - 它将产生错误。可能是“未找到命令”。这就是异常java.io.IOException: CreateProcess告诉你的。 Java无法创建您要求的新流程。

现在,至于实际回答OP,我建议这样做;

        rt.exec(new String[]{"cmd.exe", "/c", "start", fileName});

遗憾的是,这看起来与之前的答案完全相同。

答案 1 :(得分:2)

您正试图在fileName对象中执行Runtime,这是错误的!尝试如下:

rt.exec(new String[]{"cmd.exe", "/c", "start", fileName});