First
Second
Third
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile04 {
public static void main(String[] args) {
try (BufferedReader
buffIn = new BufferedReader(new FileReader(
"D:\\faculty\\myfile.txt"))) {
String line = "";
int count = 1;
buffIn.mark(1);
line = buffIn.readLine();
System.out.println(count + ": " + line);
line = buffIn.readLine();
count++;
System.out.println(count + ": " + line);
buffIn.reset();
line = buffIn.readLine();
count++;
System.out.println(count + ": " + line);
} catch (IOException
e) {
System.out.println("IOException");
}
}
}
What is the result?
A.
1: First
2: Second
3: Third
1: First
2: Second
3: Third
B.
1 : First
2: Second
3: First
1 : First
2: Second
3: First
C.
1: First
2: First
3: First
1: First
2: First
3: First
D.
IOExcepton
IOExcepton
E.
Compilation fails
Compilation fails
Risposta
B
readLine() legge una riga di testo
dallo stream di ingresso restituendo una stringa.
una riga finisce quando nello
stream si incontrano le sequenze "\n", "\r", oppure "\r\n" e queste
sequenze non vengono restituite nella stringa.
Quindi ad ogni readline il programma
legge la riga corrente e si posiziona alla riga successiva.
Invece mark consente di mettere un
segnalino in un punto dello stream e con il comando reset di tornare al punto marcato.
Quindi il codice esegue queste operazioni:
1)
si
marca lo stream in questo punto, cioè all'inizio.
2)
si
legge e si stampa la prima riga. Readline ci posiziona alla riga successiva, quindi
alla seconda.
3)
si
legge e si stampa la riga corrente, quindi la seconda. Readline ci posiziona alla
riga successiva, quindi alla terza.
4)
si
fa il reset, quindi si ritorna alla marcatura e quindi alla prima riga.
5)
si
legge e si stampa la riga corrente, quindi la prima. Readline ci posiziona alla
riga successiva, quindi alla seconda ma intanto il programma è arrivato alla
fine.

Nessun commento:
Posta un commento