Мне нужно обернуть команду Unix «tail -f» в BufferedInputStream. Я не хочу имитировать или имитировать хвост, как указано this question. Скорее, я хочу использовать хвост, ожидая его, чтобы дать мне новую линию.Java "tail -f" wrapper
ответ
Лучше всего использовать Process
класс и читать с Scanner
:
Runtime r = Runtime.getRuntime()
Process p = r.exec("tail -f")
Scanner s = new Scanner(p.getInputStream())
while (s.hasNextLine()) {
String line = s.nextLine()
// Do whatever you want with the output.
}
hasNextLine()
должен блокировать, как он ждет дополнительного ввода из входного потока, так что вы не будете занят ожидающим как данные приходит в
Я предполагаю, что подходы типа system() и popen() не будут работать, поскольку они заблокируют вашу программу до тех пор, пока команда tail не завершится.
Я думаю, вы можете перенаправить вывод в файл и использовать «diff» для последней версии, чтобы увидеть, какие строки являются новыми?
Если у вас есть команда Unix
tail -f <file> | <some java program>
Тогда хвост будет выглядеть как InputStream
, которые могут блокировать в течение определенного периода времени. Если вы не хотите блокировать себя, вы должны использовать nio-пакеты. Я считаю, что большинство других способов доступа к команде хвоста (например, Process
) приводит к аналогичному InputStream
.
проверка также ProcessBuilder:.
Process tail = new ProcessBuilder("tail", "-f", file).start();
BufferedInputStream bis = new BufferedInputStream(tail.getInputStream())
где file
- это строка, называемая «/ var/log/messages».
- 1. альтернатива tail -F
- 2. Понимание F # tail-recursive
- 3. tail -f в webbrowser
- 4. Возможно ли получить выход команды «tail -f» в java-программу?
- 5. «tail -f» делает диск полным?
- 6. python sys.stdin.read() from tail -f
- 7. Tail -f с внешним СЭДОМ
- 8. tail -f using PuTTY hangs
- 9. Веб-реализация «tail -f filename»?
- 10. tail -f реализация в node.js
- 11. Реализовать «tail -f» в C++
- 12. Как остановить команду tail -f через java-программу?
- 13. Изменение вывода `tail -f` в реальном времени
- 14. PHP Чтение linux tail -f с SSH2
- 15. Как использовать tail -f в сценарии оболочки?
- 16. Как использовать tail -f в цикле
- 17. Как сломать команду tail -f в bash
- 18. Есть ли эквивалент `tail -f` в Perl?
- 19. Пользовательская реализация функции «tail -f» в C
- 20. Документация или учебник JNC Tail-f
- 21. Rfactor this F # code to tail recursion
- 22. tail -f pipe не только одна строка
- 23. tail -f в python без времени.sleep
- 24. Tail Recursion - Java
- 25. Java Связанный список добавления Tail
- 26. Tail/вперед рекурсии в Java
- 27. Tail оптимизация рекурсии и рекурсии в Java
- 28. Java Beans & Wrapper Class
- 29. Create Java Annotation Wrapper
- 30. Wrapper Factory в Java
Спасибо! Он работает очень хорошо. – geowa4
Единственная проблема заключается в том, что в конце требуется новый символ строки – geowa4