使用Java打开外部非Java文件

时间:2010-10-18 02:14:17

标签: java runtime command-prompt ioexception

我正在尝试访问文件“J:\ Java \ NetBeansProjects \ List of forgoten things \ list.eml”并使用操作系统定义的默认应用程序打开它。这可以通过调用

在命令提示符中完成
cd "J:\Java\NetBeansProjects\List of forgoten things"
"list.eml"

所以我决定使用

  Runtime.getRuntime().exec("cd \"" + System.getProperty("user.dir") + "\"\n\r" + "\"" + selectedFile.getName() + "\"");

但它一直给我一个IOException:

 java.io.IOException: Cannot run program "cd": CreateProcess error=2, The system cannot find the file specified

有没有人有任何想分享的经验或建议?

3 个答案:

答案 0 :(得分:4)

cd不是真正的可执行文件 - 它是一个shell内置命令。

此外,我认为您要做的是在Java 6中使用Desktop,特别是open method,它会尝试在平台上使用默认注册的应用程序打开文件(如果存在)

http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html

答案 1 :(得分:2)

这是因为exec尝试将cd命令作为真实文件执行,而它只是shell命令(cmd.exe)。

您可以尝试通过调用cmd /C "cd whateverdir "将命令传递给shell exe或使用.bat文件。

答案 2 :(得分:0)

在执行文件之前,您不需要CD到目录。只需提供完整的路径。

String fileName=System.getProperty("user.dir") + selectedFile.getName();
Runtime.getRuntime().exec(fileName);