J'ai besoin d'enrouler la commande Unix "tail -f" dans un BufferedInputStream. Je ne veux pas simuler ou imiter la queue comme indiqué par this question. Au contraire, je veux utiliser la queue, en attendant qu'il me donne une nouvelle ligne.Java "queue -f" wrapper
Répondre
Votre meilleur pari est d'utiliser la classe Process
et lire avec un 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()
devrait bloquer comme il attend plus depuis le flux d'entrée, de sorte que vous ne serez pas en attente occupé en tant que données est disponible en
Je suppose que les approches de type system() et popen() ne fonctionneront pas car elles bloqueront votre programme jusqu'à la fin de la commande tail.
Je pense que vous pourriez rediriger la sortie vers un fichier et utiliser 'diff' par rapport à la dernière version pour voir quelles lignes sont nouvelles?
Si vous avez la commande unix
tail -f <file> | <some java program>
Puis la queue apparaîtrait comme un InputStream
qui peut bloquer pendant une période de temps. Si vous ne voulez pas vous bloquer, vous utiliserez les paquets nio. Je crois que la plupart des autres façons d'accéder à la commande de queue (comme Process
) se traduit par un InputStream
similaire.
vérifier aussi ProcessBuilder.
Process tail = new ProcessBuilder("tail", "-f", file).start();
BufferedInputStream bis = new BufferedInputStream(tail.getInputStream())
où file
est une chaîne comme "/ var/log/messages".
- 1. Wrapper Factory en Java
- 2. GSA Wrapper dans Java?
- 3. write java wrapper
- 4. Implémentation personnalisée de la fonctionnalité "queue -f" dans C
- 5. Java Syntaxe: octet f() [] par rapport à l'octet [] f()
- 6. queue plusieurs fichiers dans CentOS
- 7. Comment puis-je savoir si une fonction est récursive queue F #
- 8. Quels sont les avantages de Blocking Queue en Java?
- 9. F # Méthode Définition Syntaxe
- 10. Java IO implémentation d'unix/linux "tail -f"
- 11. C# Request Queue
- 12. WSMQ Queue Limit
- 13. Porte coulissante avec une queue
- 14. GnuPG Wrapper avec C#
- 15. simple wrapper jdbc
- 16. C# Ghostscript Wrapper
- 17. service web wrapper accès
- 18. Erreur PHP wrapper?
- 19. Un wrapper .net pour Google App Engine?
- 20. Calcul d'une moyenne mobile en F #
- 21. F # Fermeture
- 22. Permutations F #
- 23. F # Constructeur
- 24. Bon Amazon Simple Queue Service Bibliothèque PHP
- 25. regexp pour couper la queue en option
- 26. Générer un wrapper C à partir de C++?
- 27. convertir amp; à & et? F Degré F Vb.net
- 28. F # - Afficher les résultats complets dans F # fenêtre interactive
- 29. Obtenir dans IE la longueur d'un tableau Java passé d'une applet à son Javascript wrapper
- 30. Le wrapper de service le plus rapide pour les applications Java
Merci! Il fonctionne très bien. – geowa4
Le seul problème est qu'il nécessite un nouveau caractère de ligne à la fin – geowa4