import java.io.Reader; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; class MyReaderIterator implements OOPIterator{ private String currentLine; private BufferedReader r; MyReaderIterator(Reader r) { this.r = new BufferedReader(r); try{ currentLine = this.r.readLine(); }catch(IOException e){ r = null; } } public Object peek(){ return currentLine; } public boolean hasNext(){ return currentLine != null; } public Object next(){ Object ret = peek(); try{ currentLine = r.readLine(); }catch(IOException e){ r = null; } return ret; } public static void main(String[] args) throws IOException{ Reader r = new FileReader("C:\\myfile.txt"); MyReaderIterator itr = new MyReaderIterator( r ); while ( itr.hasNext() ){ String s = (String) itr.next(); if ( s.length() >= 10 ) System.out.println( s ); } } } interface OOPIterator{ /* pre: none * post: return true if the iterator is not empty. */ public boolean hasNext(); /* pre: hasNext() * post: return head of iterator; this is now tail. */ public Object next(); /* pre: hasNext() * post: return head of iterator; do not change this */ public Object peek(); }