Buongiorno a tutti, oggi sono qui perché vorrei capire esattamente come funzionano i programmi FILE... Ad esempio l'esercizio svolto che propongo dice:
Scrivere un programma che dapprima trascriva su un file di nome “file1” una sequenza di numeri compresi tra 32 e 126, come ad esempio
97, 60, 116, 34, 62, 99, 60, 114, 62, 60, 73, 67, 62, 75
e dopo, leggendo da “file1”, trascriva su un secondo file, di nome “file2”, solo i numeri che sono compresi tra un’occorrenza del numero 60 e un’occorrenza del numero 62.
Ad esempio, nel caso sopra il file “file2” risultante dovrebbe contenere:
116, 34, 114, 73, 67
Nota: si ipotizzi che nell’array la prima occorrenza di 60 preceda la prima occorrenza di 62 e che tra una occorrenza di 60 e la prima occorrenza di 62 ad essa successiva non vi siano altre occorrenze di 60.
Promemoria sull’uso della classe RandomAccessFile (dal package java.io)
• Apertura del file: metodo costruttore RandomAccessFile(“nome file”, “rw”)
• Scrittura sul file: metodo void write(int)
• Lettura dal file: metodo int read() (ritorna numero letto oppure -1 se raggiunta la fine del file)
Chiusura: metodo void close()
LA SOLUZIONE è:
import java.io.*;
public class EsercizioA3 {
?public static void main(String[] args) throws Exception {
?int[] vettore = {97, 60, 116, 34, 62, 99, 60, 114, 62, 60, 73, 67, 62, 75};
?RandomAccessFile file1, file2;
?int i;
?int b;
?boolean sequenza = false;
?
?file1 = new RandomAccessFile("file1.txt", "rw");
?for(i = 0; i < vettore.length; i++)
?file1.write(vettore[i]);
?file1.close();
?file1 = new RandomAccessFile("file1.txt", "rw");?
?file2 = new RandomAccessFile("file2.txt", "rw");?
?for(b = file1.read(); b != -1; b = file1.read()) {
?if (b == 60 || b == 62) {
?sequenza = !sequenza;
?}
?else if (sequenza)
?file2.write(b);
?}?
?file1.close();
?file2.close();
?}
}
BENE...il mio problema è qui:
?file1 = new RandomAccessFile("file1.txt", "rw");?
?file2 = new RandomAccessFile("file2.txt", "rw");?
?for(b = file1.read(); b != -1; b = file1.read()) {
?if (b == 60 || b == 62) {
?sequenza = !sequenza;
?}
?else if (sequenza)
?file2.write(b);
?}?
Quel ciclo for, in sostanza, serve per leggere il file, vero? Ovvero lo scansiona?
L'IF usato serve per dire: se trovi un 60 o un 62 sequenza=!sequenza...ovvero, se trovi uno di questi due numeri FERMATI NEL LEGGERE IL FILE ?
e poi non riesco a capire in questo caso l' ELSE seguito da un altro IF (sequenza)...perché mette sequenza ??
Grazie scusate per i mille dubbi ma sono una frana in Java