FileContentIterator ou une autre manière de lire un fichier

Tagged:

Voila j'en avait marre d'ouvrir des FileReader partout ... je trouve ça beacoup plus sympa un Iterator pour s'en servir comme ceci :

Iterator it = new FileContentIterator("monFichier.txt");
while (it.hasNext()) {
    System.out.println(it.next());
}
 
//Ou en java 1.5
for (String line: new FileContentIterator("monFichier.txt")) {
    System.out.println(line);
}

Alors pour ça j'ai fait un truc ultra simple mais néanmoins sympa :

public class FileContentIterator implements Iterator {
 
	private Collection lines = null;
	private Iterator it = null;
	
	public FileContentIterator(String filename) throws FileNotFoundException, IOException {
		if (!(new File(filename)).exists()) {
			throw new FileNotFoundException(filename);
		}
		
		lines = new ArrayList();
		
		FileReader filereader = new FileReader(filename);
		BufferedReader buffer = new BufferedReader(filereader);
		
		String line;
		while ((line = buffer.readLine()) != null) {
			lines.add(line);
		}
		
		buffer.close();
		filereader.close();
		
		it = lines.iterator();
	}
	
	public boolean hasNext() {
		return it.hasNext();
	}
 
	public Object next() {
		return it.next();
	}
 
	public void remove() {
	}
	
}

Et voili =)