gpt4 book ai didi

java - 在 Java Runtime Exec 中使用重定向运算符

转载 作者:可可西里 更新时间:2023-11-01 10:54:04 35 4
gpt4 key购买 nike

我有这个字符串,我在 Windows XP 的 JVM 中使用了 Runtime.exec()。

String cmd = encoderFull + ""+ "-i "+ originalFull + ""+ "-bitrate"+ ""+ bitrateVBR[i] + ""+ "-bvhq"+ ""+ "- avi "+ outputFull + ""+ "2>&1"+ ""+ "1>"+ outputFile + ".txt";

不幸的是 '2>&1 1>output.txt' 不起作用。其余的都可以。有没有办法使用这些命令来创建此文件?

再见,大卫

最佳答案

基本上,不 - Runtime.exec() 不支持您尝试执行的操作。

请注意,Runtime.exec 不是 shell - 对于您显然正在使用的 exec(String),它标记字符串(以空格作为分隔符),并尝试将第一个标记作为程序执行,其余标记作为该程序的参数。

因此,在您的情况下,重定向运算符将作为参数发送到由“encoderFull”变量命名的应用程序 - 它们不会像您期望的那样被 shell 解释,因为没有 shell。

据我所知,您在这里有两个选择:

  1. 编写批处理文件(适用于 Windows)或 shell 脚本(适用于 *nix),用于执行您的应用程序并进行重定向。然后使用 Runtime.exec() 以批处理文件/shell 脚本作为参数调用 shell(cmd 或 sh,或者你有什么)

  2. 从 Runtime.exec 创建的进程中读取输出流,并使用 java io 将内容写入适当的文件

我强烈推荐 #1 而不是 #2

您可能还应该在 "When Runtime.exec() won't - Navigate yourself around pitfalls related to the Runtime.exec() method" 上阅读这篇文章在走得更远之前。

关于java - 在 Java Runtime Exec 中使用重定向运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380054/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com