Articles of bufferedreader

Java Process无法通过Runtime.getRunTime()。exec()获取InputStream

try { String str; Process process = Runtime.getRuntime().exec("bash /home/abhishek/workspace/Pro/run"); InputStream isout = process.getInputStream(); InputStreamReader isoutr = new InputStreamReader(isout); BufferedReader brout = new BufferedReader(isoutr); while ((str = brout.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } 该代码有从进程中获取InputStream的问题,因为如果我从我的terminal运行Shell脚本它运行完全正常,但如果我像这样运行脚本,str始终为空, 我正在使用此代码将Shell脚本的输出直接input到Java中,而不是将脚本输出写入文件中 有没有其他办法可以做到这一点,或者我怎样才能解决问题使用目前的做法

java BufferedReader在Windows上,而不是在Mac上

我试图读取使用BufferedReader或扫描仪的服务器的输出,但它卡在read()或readLine()对象。 它永远不会从这条线返回。 但是,它完美地在Windows上工作。 读取输出的代码如下所示: while ((serverResponce = this.in.readLine()) != null) { if (serverResponce.compareTo(message) == 0) { break; } } 或使用Scanner类: Scanner scanner = new Scanner(socket.getInputStream()); while (scanner.hasNextLine()) { serverResponce = scanner.nextLine(); if (serverResponce.compareTo(message) == 0) { break; } } 我也尝试了在BufferedReader中的ready()或者在Scanner中的hasNextLine(),但没有任何用处。 我没有任何控制服务器的输出,所以我不知道他们正在使用什么样的格式。 它在Mac上使用telnet工作,但不在java应用程序中。 什么样的原因,使它在Windows上工作,但卡住在Mac OS X?