Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Lettura da file

  1. #1

    Lettura da file

    Salve a tutti. Avrei bsogno di leggere una sequenza di numeri (con segno) precedentemente scritti su un file di testo e di memorizzarli in un array di int.
    Ho trovato questo codice ma ottengo char in uscita. Posso in seguito effettuare una conversione o devo completamente cambiare il codice.
    -------------------------------------------------------------------------------------------
    import java.io.*;

    public class Leggere_file_V3 {
    public static void main(String [] args) throws IOException {

    // apre il file in lettura
    FileReader filein = new FileReader("C:/Users/Leonardo/Desktop/doc1.txt");
    int next;
    char nextc;

    do {
    next = filein.read(); // legge il prossimo carattere
    if (next != -1) { // se non e' finito il file
    nextc = (char) next ;

    System.out.print(nextc); // stampa il carattere
    }
    } while (next != -1);
    filein.close(); //chiude il file
    }
    }
    -------------------------------------------------------------------------------------------

  2. #2
    Help!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Lettura da file

    Originariamente inviato da Leon@@rdo
    Avrei bsogno di leggere una sequenza di numeri (con segno) precedentemente scritti su un file di testo e di memorizzarli in un array di int.
    Beh, ma dovresti anche specificare meglio il formato del file!! Hai più numeri nel file ... ok. Però: un numero per ogni riga? Tutti i numeri sulla stessa riga? E in tal caso separati da cosa? (spazio? virgola? altro?). La quantità di numeri è fissa? La conosci a priori? Non la conosci e non è nemmeno indicata nel file?

    Insomma ... o posti un esempio di file o descrivi bene (a parole) il formato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    il file è .doc i numeri sono disposti su più righe separati da uno spazio (esempio -12 111 -123 11 1111 28367 -17827 -11 ecc ecc..) il numermo di valori è random e rientrano tutti nel range di un int.

  5. #5
    mi sono dimenticato una cosa importante.. il file dove sono memorizzati i numeri è lo ottengo come output da un'altro codice di un ambiente di lavoro differente (matlab). posso quindi organizzare questi dati come voglio. Per ora sono circa 100 valori separati da uno spazio. Grazie in anticipo

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Leon@@rdo
    il file è .doc
    Non interessa la estensione .... fintanto che il file è testo "puro".

    Originariamente inviato da Leon@@rdo
    i numeri sono disposti su più righe separati da uno spazio
    No scusa .... dici su più righe e poi dici separati da spazio??? Allora più righe ma anche più numeri per riga??

    Comunque se non vuoi dover leggere tu "a righe" e poi splittare e parsare i numeri, una soluzione veloce è usare java.util.Scanner e il suo nextInt() (si occupa già lui di separare i "token" e parsarli in int).

    Per il fatto dell'array .... un array lo devi istanziare a priori e di una certa dimensione ben precisa (e non è ridimensionabile!). Se non sai a priori quanti numeri otterrai dal file, allora puoi:
    a) Usare inizialmente un ArrayList/Vector (o altra collezione "lista"), inserire tutti i numeri (Integer ovviamente, non int) e poi alla fine, sapendo la quantità, istanziare un int[] della giusta dimensione e inserirci i valori.

    b) Usare direttamente un int[], istanziato inizialmente di una certa dimensione e appena si determina che non c'è più spazio sufficiente, si istanzia un nuovo array, si ricopiano i dati e si aggiunge il nuovo valore. Concettualmente esattamente quello che fanno internamente ArrayList/Vector.

    c) Istanziare un int[] molto grande che sia sufficientemente ragionevole per i tuoi scopi. Alla fine, avendo tenuto un contatore, puoi anche istanziare un array della giusta dimensione e ricopiare tutto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    curiosità ha mica controllato la struttura del file ? esempio se lo apri con EditPad Lite o programmi che ti fanno vedere la struttura esadecimale del file e cercare di capire come è strutturato e escludere la possibilità che al suo interno ci siano caratteri speciali o di impaginazione e comprendere in che posizione sono i dati che ti servano.

  8. #8
    grazie andbin... provo!!

  9. #9
    leggendo in giro ho scoperto che molti hanno abbandonato le java.io e usano java.nio che a quanto dicono è molto più facile...

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da timeless
    leggendo in giro ho scoperto che molti hanno abbandonato le java.io e usano java.nio che a quanto dicono è molto più facile...
    Non so dove l'hai letto ..... ma è falso che è più facile. Non solo è meno facile ma ... oltretutto l'obiettivo di NIO è un altro. NIO non rende "obsolete" le classi di java.io (si può continuare benissimo ad usarle per cose tutto sommato semplici, come quanto discusso in questo thread), ma fornisce tutta una serie di nuove funzionalità che hanno l'obiettivo di rendere l'I/O più performante, scalabile, efficiente.

    Volete chiarirvi le idee su NIO?
    http://en.wikipedia.org/wiki/New_I/O
    http://www.onjava.com/pub/a/onjava/2...2/javanio.html
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.