class HelloWorld {
public static void main(String []args) {
System.out.println("hello world");
}
}class Text() {
public static void main(String []args) {
............
//我要在这里调用HelloWorld的main方法,并且把输出(hello world)放在String里,该怎么实现啊。
//
}
}我原来是这样想的
[code]
Process process=Runtime.getRuntime().exec("java joes.test.HelloWorld");
InputStream input=process.getInputStream();
byte[] data=null;
System.out.println("size:"+input.available());
input.read(data);
System.out.println(data);
[/code]
可是input的长度是0,运行到input.read时就抛空指针异常。
Process process=Runtime.getRuntime().exec("java joes.test.HelloWorld");
InputStream input=process.getInputStream();
byte[] data=null;
System.out.println("size:"+input.available());
input.read(data);
System.out.println(data);
在CMD里输入java joes.test.HelloWorld通过了。
StringBuffer buffer=new StringBuffer();
//..
public void println(String str){
buffer.append(str);
}
//..
}class Text() {
public static void main(String []args) {
MyPrintStream p=new MyPrintStream ();
System.setOut(p);
HelloWorld.main(args);
//这里 p.buffer就是你要的字符串
}
}
如果你要捕获他的输出 应该把他单独写成一个方法
而不是用main()了。.
import java.io.PrintStream;
public class Text {
public static void main(String[] args) {
MyPrintStream p = new MyPrintStream(System.out);
HelloWorld.main(args);
p.println(p.buffer.toString());
}
}
class MyPrintStream extends PrintStream {
public MyPrintStream(OutputStream out) {
super(out);
}
StringBuffer buffer = new StringBuffer();
public void println(String str) {
buffer.append(str);
}
}