我遇到了一些进程包装的问题,它只发生在Windows XP中.这段代码在Windows 7中完美运行.我真的很难过为什么XP中的流是空的.我也尝试使用Process.Exec()的String []版本,它没有任何区别.
我使用以下类从进程'STDOUT和STDERR(每个流的一个实例)中读取:
import java.util.*;
import java.io.*;
public class ThreadedStreamReader extends Thread{
InputStream in;
Queue messageQueue;
public ThreadedStreamReader(InputStream s, Queue q)
{
in = s;
messageQueue = q;
}
public void run()
{
try
{
BufferedReader r = new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = r.readLine()) != null)
{
synchronized(messageQueue)
{
messageQueue.add(line);
}
}
}catch(Exception e)
{
System.err.println("Bad things happened while reading from a stream");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里使用它:
Process p = Runtime.getRuntime().exec("test.exe");
Queue<String> q = …Run Code Online (Sandbox Code Playgroud)