java 安卓 getRuntime()。带cat命令的exec()
我正在使用process类运行此命令
/sdcard/file1.mpg /sdcar/file2.mpg > /sdcard/out.mpg
以下是我试图做到这一点的方式:
Process processx = Runtime.getRuntime().exec(new String[] {"cat","/sdcard/file1.mpg /sdcard/file2.mpg > /sdcard/out.mpg" });
BufferedReader in = new BufferedReader(new InputStreamReader(processx.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
// Waits for the command to finish.
processx.waitFor();
该命令在终端上运行,但在我尝试上述操作时无法运行,有人知道为什么吗
# 1 楼答案
我使用这段小代码执行“cat”命令和大多数shell命令:
# 2 楼答案
绝对没有理由用“猫”来做这件事。在Android上,这不是一种受支持或鼓励的机制,也没有理由启动一个新的可执行文件来完成java代码中可以轻松完成的任务,即读取一个文件并将其写入另一个文件
请注意,您正在尝试执行shell重定向,但由于您没有执行shell,因此该重定向将不起作用
# 3 楼答案
重定向(
>
)不是操作系统的功能。这是shell的一个特性。要使其在java中工作,必须运行以下操作:/bin/sh yourcommand > yourfile
即,在您的情况下:
/bin/sh cat /sdcard/file1.mpg /sdcard/file2.mpg > /sdcard/out.mpg
但是你能解释一下你为什么要这么做吗?您知道这个命令与
cp /sdcard/file1.mpg /sdcard/file2.mpg /sdcard/out.mpg
完全等价,可以在纯java中编码,而无需运行任何命令行吗?除非你有特殊的理由,否则就去吧!尽可能编写纯java代码。它更易于调试、支持和维护