Je me demande quelles techniques et/ou bibliothèque utiliser pour implémenter la fonctionnalité de la commande linux "tail -f". Je cherche essentiellement une baisse de add-on/remplacement pour java.io.FileReader
. Le code client pourrait ressembler à ceci:Java IO implémentation d'unix/linux "tail -f"
TailFileReader lft = new TailFileReader("application.log");
BufferedReader br = new BufferedReader(lft);
String line;
try {
while (true) {
line= br.readLine();
// do something interesting with line
}
} catch (IOException e) {
// barf
}
La pièce manquante est une mise en œuvre raisonnable TailFileReader
. Il devrait être capable de lire les parties du fichier qui existent avant l'ouverture du fichier ainsi que les lignes ajoutées.
Note: Si vous voulez la queue, utilisez br.skip (file.length()); J'ai expérimenté avec RandomAccessReader() mais c'est * très * lent. –
Ceci ne prend pas en compte les troncatures de fichiers; ce code échoue si le fichier journal est écrasé ... ce qui est une caractéristique essentielle de tail! –
Cela ne prend pas en charge le remplacement des fichiers journaux. – sheki