0

尝试使用 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

4

4 回答 4

1

Runtime.getRuntime().exec()您只能执行executable文件(如,cmdbatexe
mpg不是可执行文件,mpg文件被另一个工具读取。
您应该以另一种方式打开它,例如

Descktop.getDesktop().open(new File("Y:\AAA\DVD2013_GDL_(SEP)\Videos\0005000po8jy.mpg"))
于 2013-10-23T05:49:42.997 回答
0

Videos当您将文件夹名称从更改为 时它起作用的事实Video Dateien似乎表明基础文件夹名称与显示的名称不同。

底层目录被称为Video Dateien,而不是Videos. 该目录中有一个desktop.ini文件将目录的本地化名称设置为Videos.

CMD 或 java 都不理解文件夹的本地化名称,它是一个资源管理器唯一的概念。

当您使用Desktop.open它时,将打开 to explorer,它可以理解并翻译本地化的目录名称。

一般来说,我永远不会将本地化文件名放入这样的应用程序中,因为它只是自找麻烦。

于 2013-10-23T12:40:06.190 回答
0

当 Runtime.exec() 不会。此外,这些天你应该喜欢ProcessBuilder它,因为它更容易使用。

于 2013-10-23T06:55:42.630 回答
0

您需要启动播放器并将路径作为参数传递给文件。例如

    Runtime.getRuntime().exec("C:\\Windows\\default_player_name.exe -param_name D:\\file_name.mpg");

阅读您想要开始的播放器手册(如何在输入中获取文件)。

Ps 另一个好主意:创建“.bat”(如果您为 Windows 编写代码)脚本以执行所需的带有参数的程序,然后下次执行此批处理文件。

于 2013-10-23T07:42:18.170 回答