我需要读取由我编写的另一个java程序生成的byte []。 众所周知,java中的main只能返回一个void。这是否意味着我需要使用返回类型为byte []的静态方法编写程序? 如果是的话,我怎么能在我的程序中运行这个方法并在程序中保存它的返回值?这就是我在我的计划中所拥有的:
ProcessBuilder pb = new ProcessBuilder("java.exe","viewer.java","pathToViewer.java");
Process process = pb.start();
InputStream is = process.getInputStream();
byte[] bytes = IOUtils.toByteArray(is);
什么是正确的方法?
答案 0 :(得分:5)
不,您无法跨JVM实例传递返回值。您必须设计并实现将传递数据的特定协议。您有一个简单的选项是在子流程中写入System.out
,这会将数据推送到您的is
,因此您的bytes
将最终包含子流程所写的内容。