除非将文件名发送到流程的标准输入,否则不会区分数据是来自文件还是来自任何其他数据源.
您需要写入由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.这里的主要警告是,您必须在第二个线程中执行此操作,因为从同一线程访问两个阻塞流将导致死锁(请参见上面的文章).