Oppgave 1
Her vil Programkode
A.3.4 b)
være mindre effektiv enn 2. versjon av
Programkode
A.3.3 d).
Oppgave 2
Her blir det kastet et unntak fordi det i for-løkken leses én mer enn grensen. Da vil ikke reset()
virke.
Oppgave 3
BufferedInputStream inn = // bruker 4 som bufferstørrelse new BufferedInputStream(new FileInputStream("e:/abc/fil.txt"), 4); int grense = 20; inn.mark(grense); // merket settes i posisjon 0 for (int i = 0; i < grense; i++) System.out.print((char)inn.read()); System.out.println(); // ny linje inn.reset(); // lesingen starter om igjen for (int i = 0; i < 5; i++) System.out.print((char)inn.read()); System.out.println(); // ny linje inn.skip(15); int k; while ((k = inn.read()) != -1) System.out.print((char)k); inn.close(); // Utskrift: // ABCDEFGHIJKLMNOPQRST // ABCDE // UVWXYZ
Oppgave 4
I flg. kode brukes metodene available()
og skip()
til å flytte lesingen til
siste byte på filen. Men her må en passe på at Z faktisk er siste byte. Hvis en lager filen ved hjelp av en teksteditor er
det fort gjort at det kommer inn et eller flere ekstrategn på slutten (CR og EOL). Det må en unngå for at koden under skal virke
korrekt.
BufferedInputStream inn = // bruker 4 som bufferstørrelse new BufferedInputStream(new FileInputStream("e:/abc/fil.txt"), 4); inn.skip(inn.available() - 1); // hopper over alle borsett fra den siste System.out.println((char)inn.read()); // Utskrift Z inn.close();