2016-09-24 26 views
0

是否可以在Java中创建“虚拟”文件并将其作为参数传递给Process/ProcessBuilder?将“虚拟”文件传递给Java中的进程

比方说,我想调用外部.exe文件(Windows)的参数argarg必须是硬盘上的文件。考虑下面的代码为例:

Process p = Runtime.getRuntime().exec("someProgram.exe -file " + arg) 

所以,是有可能创造arg“虚拟”的文件,并以这样一种方式把它传递到Java中的外部进程?如果是这样,我该如何执行它? 我宁愿避免将文件写入硬盘,因为HDD I/O速度很慢。

+1

看看[这个问题]的接受答案(http://stackoverflow.com/questions/18903549/writing-to-inputstream-of-a-java-process),以了解你如何可能做这样的事情。这不是您的问题的确切答案,而是两个过程如何使用标准输入和输出进行通信的示例。正如Will Hartung在答案中指出的那样,您的外部程序需要能够通过标准输入接受输入。由于我假设你不能修改外部程序的代码,你可能别无选择,只能写一个文件。 –

回答

0

如果您已经有数据并且外部进程可以接受来自标准输入的数据,则可以直接将数据流式传输至进程,从而完全跳过文件写入。

您可以从Process获取输入流,并查看Java中的Pipe [Input | Output] Stream以将它们结合在一起。

+0

感谢您的回答!你能提供一个代码片段吗? –