Java BufferedReader在unix管道上阻塞

时间:2015-03-11 17:16:35

标签: java io pipe

我目前在使用BufferedReader获取unix管道句柄时遇到了问题。我的java应用程序首先创建管道,然后通过此java应用程序执行的外部perl脚本写入此管道,最后Java应用程序线程连续从此unix管道读取。

我使用以下代码从Java读取unix管道。但是我看到第4个语句阻塞而且永远不会返回。我使用的是JDK 1.8 -

File f = new File("/tmp/abc_c");  
System.out.println(f.exists) ;  
if (f.exists())  
    BufferedReader reader = new BufferedReader(new FileReader("/tmp/abc_c"));

我也看到sysout打印为true。我想知道使用BufferedReader读取Unix管道是否正确?

1 个答案:

答案 0 :(得分:0)

问题与糟糕的代码有关。文件读取发生在while循环中,并且它提供了太多文件打开消息。通过在循环外移动文件打开代码来解决这个问题。