Lire un fichier ligne par ligne dans l'ordre inverse

J'ai une application java ee où je utiliser une servlet pour imprimer un fichier journal créé avec log4j. Lors de la lecture des fichiers journaux vous sont généralement à la recherche pour le dernier journal de la ligne et, par conséquent, la servlet serait beaucoup plus utile si l'imprimer le fichier journal dans l'ordre inverse. Mon code est:

    response.setContentType("text");
    PrintWriter out = response.getWriter();
    try {
        FileReader logReader = new FileReader("logfile.log");
        try {
            BufferedReader buffer = new BufferedReader(logReader);
            for (String line = buffer.readLine(); line != null; line = buffer.readLine()) {
                out.println(line);
            }
        } finally {
            logReader.close();
        }
    } finally {
        out.close();
    }

Les implémentations j'ai trouvé dans l'internet impliquent l'utilisation d'un StringBuffer et le chargement de tous les fichiers avant l'impression, n'est-il pas un code de chemin de lumière de la recherche à la fin du fichier et de lire le contenu jusqu'au début du fichier?

  • Essayez le saut() méthode avec un max de type int. Je vais vous dire la distance qu'il a sauté. Puis de soustraire une certaine quantité de cette valeur et passer à l'il. Puis lire dans le montant restant, et d'analyser la mémoire tampon.
  • double possible de Java: Vite lu la dernière ligne d'un fichier texte? En particulier, chercher à @Jon Skeet réponse qui renvoie à une question similaire pour C#.
  • Voir aussi: stackoverflow.com/questions/4121678/...
  • skip() retourne dans quelle mesure il ignorée parce qu'elle ne sera pas forcément sauter aussi loin que vous le demandez. Il pourrait effectivement essayer de sauter aussi loin que vous l'avez demandé, cependant, et ne parviennent pas.
  • Tout simplement l'impression du journal les lignes dans l'ordre inverse n'est pas une bonne idée. Ce qui se passe, par exemple, si vous avez un multi-ligne d'entrée de journal ... comme une exception?
InformationsquelleAutor eliocs | 2011-05-15