import java.io.*; public class TekstitiedostonLukija { public static void main(String[] args) { if (args.length != 2) { System.out.println("Anna vain kaksi parametria!"); System.out.println("1. Parametri kertoo luettavan tiedoston."); System.out.println("2. Parametri kerralla luettavien rivien lukumäärän (0 on vakio)."); } else { int lkm = new Integer(args[1]); File tdsto = new File(args[0]); TekstitiedostonIteroija teksti = new TekstitiedostonIteroija(tdsto, lkm); teksti.hasNext(); } } } --------------- import java.io.*; import java.util.Iterator; public class TekstitiedostonIteroija implements Iterator { static int VAKIO_RIVIMAARA = 20; BufferedReader syottotdsto = null; String seuraavaRivi; File tiedosto; private int rivienlkm; public TekstitiedostonIteroija(File tiedosto) { try { this.syottotdsto = new BufferedReader(new FileReader(tiedosto)); } catch (FileNotFoundException e1) { System.out.println("Tiedostoa " + tiedosto + " ei löytynyt!"); } } public TekstitiedostonIteroija(File tiedosto, int rivienlkm) { this.rivienlkm = rivienlkm; if (rivienlkm == 0) this.rivienlkm = VAKIO_RIVIMAARA; try { this.syottotdsto = new BufferedReader(new FileReader(tiedosto)); } catch (FileNotFoundException e2) { System.out.println("Tiedostoa " + tiedosto + " ei löytynyt!"); } catch (NumberFormatException e3) { System.out.println("2. Parametri ei ollut kokonaisluku!"); } } public String annaTiedostonNimi() { return this.tiedosto.getName(); } public boolean hasNext() { do { try { seuraavaRivi = syottotdsto.readLine(); } catch (IOException problem) { problem.printStackTrace(); } return true; } while (seuraavaRivi != null); } public Object next() { for (int i = 0; i < this.rivienlkm; i++) { if (i < this.rivienlkm) try { seuraavaRivi = syottotdsto.readLine(); return seuraavaRivi; } catch (IOException problem) { problem.printStackTrace(); } else if (i < tiedosto.length() && seuraavaRivi != null) return syottotdsto; } return syottotdsto; } public void remove() { } }