用Java实现管道
需要关于如何在Java中实现管道的建议。例如用Java实现管道,java,Java,需要关于如何在Java中实现管道的建议。例如 echo "test"|wc 我需要显示上述管道示例的结果 我试过这个: public class myRunner { private static final String[] cmd = new String[] {"wc"}; public static void main(String[] args){ try { ProcessBuilder pb = new ProcessBuilder
echo "test"|wc
我需要显示上述管道示例的结果
我试过这个:
public class myRunner {
private static final String[] cmd = new String[] {"wc"};
public static void main(String[] args){
try {
ProcessBuilder pb = new ProcessBuilder( cmd );
pb.redirectErrorStream(true);
Process process = pb.start();
OutputStream os = process.getOutputStream();
os.write("echo test".getBytes() );
os.close();
}catch (IOException e){
e.printStackTrace();
}
如何查看wc
output的输出
我相信我可以使用的另一个库是PipedInputStream
/PipedOutputStream
。有人能举例说明如何使用它吗?我很困惑。谢谢
如何查看wc输出的输出
通过进程的输出,通过进程.getInputStream()
,并从中读取。公共数组列表执行器管道(String[]cmd,String outputOld){
public ArrayList<String> executorPiped(String[] cmd, String outputOld){
String s=null;
ArrayList<String> out=new ArrayList<String>();
try {
ProcessBuilder pb = new ProcessBuilder( cmd );
pb.redirectErrorStream(true);
Process p = pb.start();
OutputStream os = p.getOutputStream();
os.write(outputOld.getBytes());
os.close();
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
while ((s = stdInput.readLine()) != null) {
out.add(s);
}
}catch (IOException io){
}
return out;
}
字符串s=null;
ArrayList out=新的ArrayList();
试一试{
ProcessBuilder pb=新的ProcessBuilder(cmd);
pb.重定向错误流(真);
进程p=pb.start();
OutputStream os=p.getOutputStream();
write(outputOld.getBytes());
os.close();
BufferedReader标准输入=新BufferedReader(新
InputStreamReader(p.getInputStream());
BufferedReader stdError=新的BufferedReader(新的
InputStreamReader(p.getErrorStream());
而((s=stdInput.readLine())!=null){
out.添加(s);
}
}捕获(io异常){
}
返回;
}
您能发布您尝试过的内容、您期望它做什么以及它能做什么吗?请参阅检查此帖子以了解PipedInputSteam的清晰度[PipedInput/OutputStreams
与此问题无关。它们用于线程之间的通信,而不是进程之间的通信,在线程之间使用某种队列几乎总是更好,正如我在回答@SureshKoya引用的线程时所述。