使用 inputStream 和 OutputStream 向进程读写数据
Using inputStream and OutputStream to read and write data to a process
我目前运行一个.class
文件作为一个进程。 .class
文件是一个简单的程序,它要求用户输入一个数字,获取输入并将用户的输入打印回屏幕。
到目前为止,我已经设法通过 InputStream
在控制台上打印来自进程的 "Enter a number: " 语句,并通过 OutputStream
写入用户输入的输入。我无法在屏幕上打印最后的语句,应该是
"You entered : " + userinput
我的代码是:
String command [] = {"java" , "-cp", "C:\Users\Mahika\Documents\NetBeansProjects\JavaTest\compilerTest", "InputInteger"};
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();
System.out.println("Process started");
BufferedReader br = new BufferedReader (new InputStreamReader(p.getInputStream()));
String output = null;
while((output = br.readLine()) != null){
System.out.println(output);
break;
}
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
OutputStream os = p.getOutputStream();
PrintStream ps = new PrintStream(os);
os.write(i);
os.flush();
我不知道如何再次使用 InputStream
来读取 "You entered:" + 用户输入。
我不确定是否理解您的问题,但据我所知,您应该只使用扫描仪等待用户输入他的文本,如下所示:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println("you entered: " + i);
}
这应该有效:
public static void main(String[] args) throws IOException {
String command[] = {"java.exe", "-cp", "C:\Users\Mahika\Documents\NetBeansProjects\JavaTest\compilerTest", "InputInteger"};
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();
System.out.println("Process started");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println(br.readLine());
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
PrintStream ps = new PrintStream(p.getOutputStream(), true);
ps.println(i);
System.out.println(br.readLine());
}
只需确保 InputInteger
class 中的输入提示以换行符结束(例如,由 println
而不是 print
创建)。
我目前运行一个.class
文件作为一个进程。 .class
文件是一个简单的程序,它要求用户输入一个数字,获取输入并将用户的输入打印回屏幕。
到目前为止,我已经设法通过 InputStream
在控制台上打印来自进程的 "Enter a number: " 语句,并通过 OutputStream
写入用户输入的输入。我无法在屏幕上打印最后的语句,应该是
"You entered : " + userinput
我的代码是:
String command [] = {"java" , "-cp", "C:\Users\Mahika\Documents\NetBeansProjects\JavaTest\compilerTest", "InputInteger"};
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();
System.out.println("Process started");
BufferedReader br = new BufferedReader (new InputStreamReader(p.getInputStream()));
String output = null;
while((output = br.readLine()) != null){
System.out.println(output);
break;
}
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
OutputStream os = p.getOutputStream();
PrintStream ps = new PrintStream(os);
os.write(i);
os.flush();
我不知道如何再次使用 InputStream
来读取 "You entered:" + 用户输入。
我不确定是否理解您的问题,但据我所知,您应该只使用扫描仪等待用户输入他的文本,如下所示:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println("you entered: " + i);
}
这应该有效:
public static void main(String[] args) throws IOException {
String command[] = {"java.exe", "-cp", "C:\Users\Mahika\Documents\NetBeansProjects\JavaTest\compilerTest", "InputInteger"};
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();
System.out.println("Process started");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println(br.readLine());
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
PrintStream ps = new PrintStream(p.getOutputStream(), true);
ps.println(i);
System.out.println(br.readLine());
}
只需确保 InputInteger
class 中的输入提示以换行符结束(例如,由 println
而不是 print
创建)。