我尝试使用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)
如何成功打开文件?
答案 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});