Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    232

    [Java] Ciclo lettura File

    Salve a tutti...ho un file prova.txt con questa struttura:


    ***PRIMO***SINGOLO***OK
    ***CIAO***SINGOLO***OK
    ***CANE***SINGOLO***OK
    .
    .
    .
    .
    .
    .
    ***BAGNO***SINGOLO***OK

    tutto quello che c'è all'interno del file viene digitato in un campo di testo e momorizzato nel file.
    I 3 asterischi sono dei delimitatori tra un valore ed un altro.
    Io vorrei che qualcuno possa postarmi del codice con cui aprire il file in lettura, leggere il contenuto e stampare (con un ciclo) il primo valore di ogni riga (nell'esempio PRIMO, poi CIAO,poi CANE...e così via).

    Io riesco a stampare il primo valore ovvero PRIMO, ma come fare un ciclo che,sino quando ci sono altre righe, mi stampi il primo valore che trova dopo i 3 asterischi, di ogni riga???

    Io ho fatto così

    FileInputStream fis = new FileInputStream ("C:/.../prova.txt");
    int disponibili = fis.available();
    byte [] array_disp = new byte[disponibili];
    fis.read(array_disp);
    fis.close();

    String lettura = new String (array_disp);
    int a = lettura.indexOf("***");
    a=a+3;
    String senzaAsterischi = lettura.substring(a);
    int b = senzaAsterischi.indexOf("***");
    String ok = senzaAsterischi.substring(0,b);
    System.out.println(ok);

    la stampa di ok produrrà PRIMO!

    Ripeto, come fare un ciclo che legga il primo valore di ogni riga e me lo stampi sino a quando il file non è terminato o cmq sino a quando ci sono altre righe???

    Ringrazio Tutti anticipatamente

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; puoi anche provare:

    codice:
            File f = new File( "C:/temp/prova.txt" );
            try {
                BufferedReader buff = new BufferedReader(new FileReader(f));
                String line = null;
                int count = 0;
                while( ( line = buff.readLine() ) != null ){
                    
                   StringTokenizer st = new StringTokenizer( line, "***" );
                   while( st.hasMoreTokens() && (count == 0) ){
                       
                       System.out.println( st.nextToken() );
                       count++;
                   }
                   count = 0;
                }
            } catch (FileNotFoundException ex) {
                
                ex.printStackTrace();
            } catch (IOException ex) {
                
                ex.printStackTrace();
            }
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    232
    Grazie, Va Ok!

    Ma se volessi avere ogni valore in una variabile String come potrei fare?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh... se conosci a priori il numero di valori contenuti nel file puoi agire in due modi: creare tante variabili quanti sono i valori (scomodissimo) oppure creare un array di String e inserire ciascun valore in una delle celle dell'array.

    Altrimenti, se non conosci a priori il numero di elementi del file, puoi utilizzare un Vector e inserire in esso ciascuno dei valori.

    Ciò che ti serve è il metodo nextToken() di StringTokenizer che restituisce il prossimo elemento.

    Dai un'occhiata qui


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.