2009-01-13 4 views
1

Je cherche la méthode la moins impactante pour lire quelques fichiers journaux différents. Par "impact le moins", je veux dire que la lecture n'affectera pas la rotation du journal, ne provoquera pas d'activité E/S, etc. Je cherche à accomplir ceci avec Java ...Quelle est la meilleure méthode (la moins impactante?) Pour lire un fichier écrit par un autre processus?

Google m'a donné le petit mot de code suivant:

FileStream fs = new FileStream("C:\foo.txt", 
FileMode.Open,FileAccess.Read, FileShare.ReadWrite); 

cela devrait être failry trivial à mettre en œuvre, mais je ne suis pas trop sûr de mon Java « couper et coller » les capacités et je voudrais savoir s'il y a une meilleure façon de le faire. La grande image ici est de troller quelques logs d'apache et de tomcat cherchant quelques entrées principales basées sur l'activité d'application et de prendre une certaine action basée sur l'entrée. De toute façon, des conseils? Je vous remercie!

Répondre

1

Choisissez l'un de here

:)

j'essayer de ne pas tous, mais il y a des commentaires utiles de Jon Skeet sur la façon de ne pas le faire. Je parierai pour le nio un.

FileInputStream stream = new FileInputStream(new File(path)); 
    try { 
    FileChannel fc = stream.getChannel(); 
    MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); 
    /* Instead of using default, pass in a decoder. */ 
    return CharSet.defaultCharset().decode(bb).toString(); 
    } 
    finally { 
    stream.close(); 
    } 

Voir les détails dans cette question.

Questions connexes