Java-如何使用outputstream向子进程发送值?

Java-如何使用outputstream向子进程发送值?,java,process,inputstream,outputstream,Java,Process,Inputstream,Outputstream,我每次重新启动子进程时都需要获得一个随机数,但我认为可以使用outPutStream来完成,但我不知道怎么做。我看到了其他人的帖子,但我没有发现任何与我的问题相关的东西。我不想用插座 主要过程 public class ejercicio7 { public static void main(String [] args){ boolean cerrado = false; try { while(!cerrado){

我每次重新启动子进程时都需要获得一个随机数,但我认为可以使用outPutStream来完成,但我不知道怎么做。我看到了其他人的帖子,但我没有发现任何与我的问题相关的东西。我不想用插座

主要过程

public class ejercicio7 {

    public static void main(String [] args){
        boolean cerrado = false;

        try {
            while(!cerrado){
                String entrada = JOptionPane.showInputDialog(null, "Introduce una entrada");
                Process proceso = Runtime.getRuntime().exec("java -jar C:\\Users\\Cristian\\Desktop\\java\\numeros.jar \"" + entrada+"\"");
                BufferedReader br = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
                String texto;

                while((texto = br.readLine()) !=null){
                    if(Boolean.parseBoolean(texto)){
                        cerrado = true;
                    }else{
                        System.out.println(texto);
                    }
                }               
                br.close();
                proceso.destroy();
            }


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
子进程

public static void main(String[] args) {

        if(args.length <=0 && args[0].length() == 0){
            System.out.println("No se ha introducido una entrada");
        }else{

            if(!args[0].equalsIgnoreCase("fin")){
                System.out.println(Math.round(Math.random() * 10));
            }else{
                System.out.println("true");
            }
        }

    }

}
publicstaticvoidmain(字符串[]args){

如果(args.length使您的子进程处理输入流:

public static void main(String[] args) throws Exception {
    String line;
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));

    while (!"fin".equals(line = reader.readLine())) {
        System.out.println(line);
    }

    System.out.println("buy");
}
然后在主进程中,您可以向子进程发送消息:

Process proceso = Runtime.getRuntime().exec("java -jar C:\\Users\\Cristian\\Desktop\\java\\numeros.jar");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(proceso.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
String texto;

out.write(entrada + "\n");
out.flush();

while((texto = in.readLine()) !=null){
    ...

如果主代码要向子代码发送数据,为什么要使用读取器。请从proceso.getOutputStream()打开一个编写器是的,我知道这一点,但问题是告诉子进程如何读取主进程的发送。我试图在一个非常简短的示例中实现您的代码。我发现的第一个错误是out.writeLine不存在,但我认为是write()方法。无论如何,我无法正常工作。我无法粘贴所有代码。Main:
BufferedWriter bw1=new BufferedWriter(new OutputStreamWriter(proceso.getOutputStream());bw1.write(“asdasd”);
Child:
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in,“UTF-8”);