Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Da FileBinario contenete numeri interi a array di interi
Forum - Java - Da FileBinario contenete numeri interi a array di interi

Avatar
Piero87 (Normal User)
Newbie


Messaggi: 16
Iscritto: 18/11/2009

Segnala al moderatore
Postato alle 14:06
Venerdì, 02/07/2010
Ciao a tutti! Ho un problema con parte del mio codice, allora per adesso sono riuscito a fare questo:
Codice sorgente - presumibilmente Java

  1. int[] info = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xff};
  2.        
  3.         try {
  4.             RandomAccessFile file = new RandomAccessFile("info.dat","rw");
  5.             for (int i=0; i<info.length; i++){
  6.                 file.write(info[i]);
  7.             }
  8.             file.close();
  9.            
  10.             file = new RandomAccessFile("info.dat","r");
  11.             System.out.println("File length: "+ file.length());
  12.             boolean eof = false;
  13.             try {
  14.                 do {
  15.                     System.out.println("File pointer pos: "+file.getFilePointer());
  16.                     int value = file.read();
  17.                     if (value==-1){
  18.                         System.out.println("END of FILE. ");
  19.                         eof = true;
  20.                     } else {
  21.                         System.out.println("Info: "+value);
  22.                     }
  23.                 } while (!eof);
  24.             } catch (Exception ex){
  25.                 ex.printStackTrace();
  26.             } finally {
  27.                 file.close();
  28.             }
  29.         } catch (Exception ex){
  30.             ex.printStackTrace();
  31.         }
  32.     }


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...

PM Quote
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Segnala al moderatore
Postato alle 14:22
Venerdì, 02/07/2010
Forse dovresti semplicemente usare un long[] al posto di un int[]...

PM Quote
Avatar
Piero87 (Normal User)
Newbie


Messaggi: 16
Iscritto: 18/11/2009

Segnala al moderatore
Postato alle 15:41
Venerdì, 02/07/2010
in quale punto?

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 18:11
Venerdì, 02/07/2010
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[]={}

PM Quote
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Segnala al moderatore
Postato alle 18:11
Venerdì, 02/07/2010
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 il 02/07/2010 alle 18:12
PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 18:13
Venerdì, 02/07/2010
Tranquillo:)

PM Quote
Avatar
Piero87 (Normal User)
Newbie


Messaggi: 16
Iscritto: 18/11/2009

Segnala al moderatore
Postato alle 18:29
Venerdì, 02/07/2010
ok grazie!!!!

PM Quote