import java.io.*; public class TekstitiedostonLukija { public static void main(String[] args) { int rivit = TekstitiedostonIteroija.VAKIO_RIVIMAARA; Scanner nappis = new Scanner(System.in); if(args.length != 2) { tulosta_kaytto_ohje(); return -1; } File tied = new File(args[0]); if(!tied.exists()) { tulosta_virhe_tied_ei_olemassa(); return -1; } try { rivit = Integer.parseInt(args[1]); } catch(NumberFormatException nfe) { tulosta_virhe_ei_kok_luku(); return 0; } TekstitiedostonIteroija iter = new TekstitiedostonIteroija(tied, rivit); if(iter.hasNext()) System.out.println(iter.next()); while(nappis.nextLine().compare("") == 0) { tulosta_info(); System.out.println(iter.next()); } } } --------------- import java.io.*; import java.util.Iterator; public class TekstitiedostonIteroija implements Iterator { public static final int VAKIO_RIVIMAARA = 20; private String seuraavaRivi; private File tiedosto; private int rivienlkm; private Scanner lukija; public TekstitiedostonIteroija(File tiedosto) { this.tiedosto = tiedosto; this.rivienlkm = VAKIO_RIVIMAARA; } public TekstitiedostonIteroija(File tiedosto, int rivienlkm) { this(tiedosto); this.rivienLkm = rivienLkm; this.lukija = new Scanner(tiedosto); } public String annaTiedostonNimi() { return this.tiedosto.getName(); } public boolean hasNext() { return lukija.hasNextLine(); } public Object next() { String paluu = ""; for(int i = 0; i < this.rivienLkm; i++) { if(this.hasNext()) paluu += lukija.readLine; } return paluu; } public void remove() { } }