首页 > Java > java教程 > 正文

如何使用 exec() 方法修复 Java 输出重定向失败?

Linda Hamilton
发布: 2024-10-24 08:10:30
原创
130 人浏览过

How to Fix Java Output Redirection Failure Using exec() Method?

Java exec() 方法输出重定向失败

在此问题中,用户尝试使用 Java 运行时重定向 shell 脚本的输出.getRuntime().exec() 方法。但是,重定向失败,并且未创建指定的输出文件。

提供的代码片段是:

Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
登录后复制

通常,此命令应将脚本的输出重定向到文件输出.txt。但是,在这种情况下,即使直接在 shell 中执行脚本成功运行,输出也不会重定向。

解决方案:使用 ProcessBuilder 进行重定向

解决方案在于使用 ProcessBuilder 而不是 Runtime.getRuntime().exec()。 ProcessBuilder 提供了对进程创建的更多控制,并允许显式重定向输入、输出和错误流。

使用 ProcessBuilder 修改后的代码如下:

ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh");
builder.redirectOutput(new File("out.txt"));
builder.redirectError(new File("out.txt"));
Process p = builder.start(); // may throw IOException
登录后复制

在此代码中, ProcessBuilder 已创建并配置为将标准输出和错误流重定向到文件 out.txt。然后使用 start() 方法创建进程,如果出现问题,可能会抛出 IOException。

通过利用 ProcessBuilder,可以显式管理输出重定向,从而解决问题。

以上是如何使用 exec() 方法修复 Java 输出重定向失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!