2015-03-11 8 views
0

В настоящее время я сталкиваюсь с проблемой при использовании BufferedReader, чтобы получить дескриптор Unix-канала. Вначале мое приложение Java создает канал, а внешний скрипт perl, выполняемый через это приложение Java, записывает в этот канал, и, наконец, поток приложения Java непрерывно считывает из этого Unix-канала.Блоки Java BufferedReader на трубе unix

Я использую следующий код для чтения unix-канала с Java. Однако я вижу, что четвертый оператор блокирует и никогда не возвращается. Я использую 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-канала?

+0

Когда он блокируется? Перед тем, как читать что-нибудь или позже? – fge

+0

Перед чтением ничего. Просто при открытии. – user1619355

+0

ОК, а также, почему вы открываете читателя напрямую? Напомним, что читатель попытается декодировать поток байтов в символы. Это одна из проблем, которые у вас есть (и вы также не указываете кодировку символов) – fge

ответ

0

Вопрос был связан с плохим кодом. Чтение файла происходило внутри цикла while, и оно давало слишком много файлов для открытия сообщения. Это было исправлено путем перемещения открытого кода файла за пределы цикла.

Смежные вопросы