Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Ricominciare la lettura da file dall'inizio

  1. #1
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310

    Ricominciare la lettura da file dall'inizio

    Salve,

    ho il seguente metodo
    codice:
    private List<Station> getListStations(List<String> listIdNumber, String path){
            
            List<Station> listStations = new ArrayList<Station>();
            
            CsvReader csvReader = null;
            try {
                csvReader = new CsvReader(new FileReader(path));
                csvReader.setDelimiter(';');
                            
                //Per ogni elemento della lista 
                for(String idNumber : listIdNumber){
                    
                    csvReader.readHeaders();
    
    
                    csvReader.readRecord();
                    
                    boolean flag = true;
                    while(csvReader.readRecord() && flag){
                        
                        if(csvReader.get(2).equals(idNumber)){
                            
                            Station s  = new Station();
                            s.setRegionName(csvReader.get(0));
                            s.setIndexNumber(csvReader.get(2));
                            s.setActive(csvReader.get(3);
                            listStations.add(s);
                            
                            //ricominciamo la lettura del file dall'inizio
                            
                            flag = false;
                        }
                    }
                    
                }
                
            } catch (FileNotFoundException e) {    
                logger.error(msg);
            } catch (IOException ex) {
                logger.error(msg);
            }    
            
            return listStations;
        }
    che data una lista di stringhe ed un path deve estrarre dal file tutte gli elementi i cui identificativi coincidono, solo che individuato l'elemento e ciclando su di un nuovo identificativo devo poter ricominciare la lettura del file dall'inizio.
    C'è un modo per fare ciò.

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    344
    Ciao!

    Non ho mai usato CsvReader e non vedo un metodo nella documentazione (spero stiamo parlando della stessa classe/versione) per resettare il lettore, ma guardando un po' online mi par di capire che, almeno per il BufferedReader, si consiglia di creare un nuovo oggetto piuttosto che cercare un modo per "farlo ricominciare dall'inizio".

    Ma se fossi in te io non ricomincerei la lettura dall'inizio, mi pare poco logico e molto più oneroso. Perché non salvi l'intero file in un'adeguata struttura dati e poi non fai le ricerche su di essa? Non sono un esperto ma io farei in questo modo, usando magari una mappa, magari prova a fare un esempio di cosa contiene il file e cosa puoi voler cercare (potresti postare anche qualche riga) e vediamo se questa soluzione può andare bene.

  3. #3
    Quote Originariamente inviata da cerza Visualizza il messaggio
    solo che individuato l'elemento e ciclando su di un nuovo identificativo devo poter ricominciare la lettura del file dall'inizio.
    No, è davvero poco sensato (e poco performante).

    Magari puoi/dovresti cercare di ragionare "al contrario". Invece di fare "per ciascun idNumber della lista lo cerco nel file" (che effettivamente vuol dire ri-elaborare il file), fare il contrario: "leggo una volta sola il file e per ciascun record vedo se il id è uno di quelli che sto cercando"
    Ultima modifica di andbin; 05-10-2017 a 09:53
    Andrea, www.andbin.net – Senior Java developer – SCJP 5 (91%) – SCWCD 5 (94%)
    Il mio blog sulla programmazione

  4. #4
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    OK, grazie ad entrambi il per il suggerimento

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 © 2017 vBulletin Solutions, Inc. All rights reserved.