Problema con i file

di il
1 risposte

Problema con i file

Premesso che come linguaggio mi è del tutto nuovo, il mio prof. ha chiesto di:
caricare un file di testo numerico su un vettore.
qualcuno mi potrebbe spiegare come si fa?? grazie

1 Risposte

  • Re: Problema con i file

    Ciao, provo ad aiutarti. C'e' da premettere che non ho informazioni sul come vengono presentati i dati numerici nel file quindi parto dall'ipotesi che siano rappresentati mediante sequenze di byte.In java esistono due tipologie di stream, quello orientato ai byte e quello orientato ai caratteri. Tra le classi che gestiscono stream di byte ve ne sono due dedicate alla gestione dei dati rappresentati dai tipi primitivi del linguaggio tra cui i seguenti tipi numerici:

    byte intero con segno 8bit
    short intero con segno 16bit
    int intero con segno 32bit
    long intero con segno 64bit
    float numero in virgola mobile 32bit
    double numero in virgola mobile 64bit

    Queste classi sono: java.io.DataOutputStream e java.io.DataInputStream.

    Se ad esempio nel file fosse stata salvata una sequenza di double ( 8 byte per ciascun numero ) possiamo scrivere una classe java di esempio che scrive in un file qualche double, successivamente li legge dallo stesso file, li memorizza in un array ed infine legge l'array e lo stampa:

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;

    class DemoStream {

    public static void main(String[] args) throws Exception{


    FileOutputStream fileOut = new FileOutputStream("c:\\dati_numerici.txt");

    DataOutputStream out = new DataOutputStream(fileOut);

    out.writeDouble(3.14);
    out.writeDouble(32.14);
    out.writeDouble(1.5);
    out.writeDouble(5.2);

    out.close();
    fileOut.close();

    File datiNumerici = new File("c:\\dati_numerici.txt");

    FileInputStream fileIn = new FileInputStream(datiNumerici);
    DataInputStream in = new DataInputStream(fileIn);

    /*Per sapere quanti double ci sono divido per 8 il numero di bytes
    presenti nel file
    */
    double[] data = new double[(int)datiNumerici.length()/8];


    for(int i=0;i<(int)datiNumerici.length()/8;i++){
    data=in.readDouble();
    }


    for(int i=0;i<(int)datiNumerici.length()/8;i++){
    System.out.println("Dato "+i+":"+data);
    }

    in.close();
    fileIn.close();

    }
    }

    Ho utilizzato anche le classi java.io.FileOutputStream e java.io.FileInputStream per poter scrivere e leggere i dati su su file.La porzione di codice di esempio non fa altro che scrivere 4 double su un file, poi lo legge e salva i double in un array di lunghezza pari al numero di double presenti nel file, che infine viene letto e stampato in tutti i suoi elementi . L'ouptut dovrebbe essere questo:

    Dato 0:3.14
    Dato 1:32.14
    Dato 2:1.5
    Dato 3:5.2
Devi accedere o registrarti per scrivere nel forum
1 risposte