package javacodebook.io.dirtree;

import java.io.*;

/**
 * Ein Beispiel für einen FileVisitor, der die Zeilen aller in einer
 * Verzeichnisstruktur befindlichen Dateien eines bestimmten Typs
 * zusammenzählt.
 */
public class CountLineNumbersVisitor implements FileVisitor {

    private int noOfLines = 0;

    public void visitFile(File f)
    throws IOException {
        //Der LineNumberReader zählt automatisch mit, in welcher Zeile er sich befindet
        LineNumberReader in = new LineNumberReader(new FileReader(f));
        while(in.readLine() != null)
            ;
        //Die Gesamtzahl der Zeilen wird hochgezählt
        noOfLines += in.getLineNumber();
        //Datei wieder schliessen
        in.close();
    }

    public int getNoOfLines() {
        return noOfLines;
    }

    //Diese Methode wird für die Funktionalität nicht benötigt.
    public void visitDirectory(File f, int mode) throws IOException {
    }

}