Bla*_*dez 6 java process runtime.exec io-redirection
我需要从程序执行命令.命令行没问题,我在终端试了一下,但它在程序中不起作用.
我从我的代码中添加了一个副本:
File dir = new File("videos");
String[] children = dir.list();
if (children == null) {
// Either dir does not exist or is not a directory
System.out.print("No existe el directorio\n");
} else {
for (int i=0; i<children.length; i++) {
// Get filename of file or directory
String filename = children[i];
//Recojo el momento exacto
System.out.print("\n" +filename);
Process p = Runtime.getRuntime().exec("exiftool -a -u -g1 -j videos/"+filename+">metadata/"+filename+".json");
}
Run Code Online (Sandbox Code Playgroud)
程序必须获取文件夹(文件名)中所有文件的名称,并提取theese视频的元数据,将它们写入文件夹"元数据"中的.json文件.
问题出在哪儿?
And*_*yle 13
问题是,重定向字符(>)是基于shell的构造,而不是可执行文件.因此,除非你通过类似bash(你不是)之类的东西运行这个命令,否则它将被解释为你的exiftool调用的文字字符参数.
如果你想让它工作,你有两个选择:
bash -c.这可能需要一些英勇的逃避,虽然在你的情况下它看起来不错.>符号的所有内容),然后从进程'outputstream读取并将所有内容写入相应的文件.后一种方法听起来像最初的工作,但是当你认为你总是需要总是阅读一个进程的输出(参见javadocs,第二段)时,它实际上是非常少的额外的.您只是将此输出发送到文件而不是丢弃它.
| 归档时间: |
|
| 查看次数: |
1985 次 |
| 最近记录: |