尝试使用Java启动视频文件时,我有一种奇怪的行为。
以下是代码:
File f = new File("Y:\AAA\DVD2013_GDL_(SEP)\Videos\0005000po8jy.mpg");
String[] cmd = new String[3];
cmd[0] = "cmd.exe";
cmd[1] = "/C";
cmd[2] = "\""+f.getAbsolutePath()+"\"";
Runtime.getRuntime().exec(cmd);
出于某种原因,视频无法启动。将路径粘贴到cmd时,文件会毫无问题地启动。
现在,当我将路径更改为:
Y:\AAA\DVD2013_GDL_(SEP)\Video Dateien\0005000po8jy.mpg
以上代码有效。请注意,我只是将文件夹名称从“视频”更改为“视频日期”。
有人有想法,为什么我的代码在描述的情况下不起作用?顺便说一句,我使用的是Java 1.7。
编辑:我没有异常,也没有冻结或其他奇怪的行为。
感谢您的帮助, klib
答案 0 :(得分:1)
使用Runtime.getRuntime().exec()
,您只能执行executable
文件(例如cmd
,bat
,exe
等。)
mpg
不是可执行文件,mpg
文件由其他工具读取
你应该用另一种方式打开它,例如
Descktop.getDesktop().open(new File("Y:\AAA\DVD2013_GDL_(SEP)\Videos\0005000po8jy.mpg"))
答案 1 :(得分:0)
When Runtime.exec() won't。此外,这些天您应该使用ProcessBuilder
,因为它更容易使用。
答案 2 :(得分:0)
您需要启动播放器并将路径传递给文件作为参数。 E.g。
Runtime.getRuntime().exec("C:\\Windows\\default_player_name.exe -param_name D:\\file_name.mpg");
阅读播放器手册,了解您想要的内容(输入文件的方式)。
P.S。还有一个好主意:创建'.bat'(如果你编写windows代码)脚本,用于执行带参数的programm,下次执行这个批处理文件。
答案 3 :(得分:0)
当您将文件夹的名称从Videos
更改为Video Dateien
时,它的工作原理似乎表明底层文件夹名称与显示的文件夹名称不同。
基础目录名为Video Dateien
,而不是Videos
。该目录中有一个desktop.ini
文件,它将目录的本地化名称设置为Videos
。
CMD或java都不了解文件夹的本地化名称,它只是一个探索者的概念。
当您使用Desktop.open
时,它会将explorer
的开头移开,它会理解并翻译本地化的目录名称。
一般情况下,我绝不会将本地化的文件名放入这样的应用程序中,因为它只是在寻找麻烦。