java runtime exec 输出_(Java)Runtime.exec中的文件重定向(双向)?

除非将文件名发送到流程的标准输入,否则不会区分数据是来自文件还是来自任何其他数据源.

您需要写入由Process.getOutputStream()给定的OutputStream.您可以使用FileInputStream从文件中读取写入其中的数据.

放在一起可能看起来像这样:

Process proc = Runtime.getRuntime().exec("...");

OutputStream standardInputOfChildProcess = proc.getOutputStream();

InputStream dataFromFile = new FileInputStream("theFileWithTheData.dat");

byte[] buff = new byte[1024];

for ( int count = -1; (count = dataFromFile.read(buff)) != -1; ) {

standardInputOfChildProcess.write(buff, 0, count);

}

我遗漏了很多细节,这只是为了了解要点.您需要安全地关闭东西,可能要考虑缓冲,并且需要担心pitfalls of Runtime.exec().

编辑

将输出写入文件是类似的.获取一个指向输出文件的FileOutputStream,并将您从Process.getInputStream()中读取的数据写入该OutputStream.这里的主要警告是,您必须在第二个线程中执行此操作,因为从同一线程访问两个阻塞流将导致死锁(请参见上面的文章).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值