我正在尝试访问文件“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
有没有人有任何想分享的经验或建议?
答案 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);