import java.io.*; import java.util.Iterator; public class IterableReader implements Iterable{ private Reader reader; IterableReader(Reader r){ reader = r; } public Iterator iterator(){ return new MyIterator( reader ); } private class MyIterator implements Iterator{ private BufferedReader br; private String nextLineToBeReturned; private MyIterator(Reader r){ br = new BufferedReader( r ); readALine(); } private void readALine(){ try{ nextLineToBeReturned = br.readLine(); }catch(IOException uups){ nextLineToBeReturned = null; } } public boolean hasNext(){ return nextLineToBeReturned != null; } public String next(){ String ret = nextLineToBeReturned; readALine(); return ret; } public void remove(){ throw new UnsupportedOperationException(); } } }