Oppure

Loading
02/07/10 12:06
Piero87
Ciao a tutti! Ho un problema con parte del mio codice, allora per adesso sono riuscito a fare questo:
int[] info = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xff};
        
        try {
            RandomAccessFile file = new RandomAccessFile("info.dat","rw");
            for (int i=0; i<info.length; i++){
                file.write(info[i]);
            }
            file.close();
            
            file = new RandomAccessFile("info.dat","r");
            System.out.println("File length: "+ file.length());
            boolean eof = false;
            try {
                do {
                    System.out.println("File pointer pos: "+file.getFilePointer());
                    int value = file.read();
                    if (value==-1){
                        System.out.println("END of FILE. ");
                        eof = true;
                    } else {
                        System.out.println("Info: "+value);
                    }
                } while (!eof);
            } catch (Exception ex){
                ex.printStackTrace();
            } finally {
                file.close();
            }
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }

In pratica devo creare un file binario contenente degli interi, come ho fatto sopra, e devo poi mettere questi ingeri in un int []...per ora ho provato solo a stampare in output i valori letti dal file...e però ho notato che se aggiungo dei valori più alti di 255 ossia 0xff nel file binario, dopo andandoli a leggere non me lo riconosce, mi dite come posso modificare questo codice per poter inserire i numeri interi di qualsiasi grandezza: 10 100 1586645, in un array di interi?...ve be sarei molto grato...
aaa
02/07/10 12:22
nihal
Forse dovresti semplicemente usare un long[] al posto di un int[]...
aaa
02/07/10 13:41
Piero87
in quale punto?
aaa
02/07/10 16:11
Bonny
Nihal ha ragione basta dichiarare l'array long invece di int, perchè in una variabile intera occupa 32 bit di memoria invece il tipo long 64 bit.
quindi:
invece di int info[]={} lo dichiari l'array che deve contenere i dati letti dal file.dat,di tipo long info[]={}
aaa
02/07/10 16:11
nihal
Scusa, tu con questo codice crei un file binario e lo riempi con i valori presi da un array di int, e poi ne stampi il contenuto. Ma se il numero è più grande di 255, non "ci va" in un int, quindi devi usare un long. Quindi l'array info deve essere un long[].

EDIT: Bonny scusa, non ho visto il tuo messaggio :D
Ultima modifica effettuata da nihal 02/07/10 16:12
aaa
02/07/10 16:13
Bonny
Tranquillo:)
aaa
02/07/10 16:29
Piero87
ok grazie!!!!
aaa