La lettura di file di testo e saltando le righe vuote fino a EOF è raggiunto

Sto cercando di leggere il file csv del testo; tuttavia, se c’è una riga vuota in mezzo da qualche parte, il tutto si rompe e ottengo un:

java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException

Come posso fare per rimozione/ignorando le righe vuote fintanto che non è la fine del file?

        file = new FileReader(fileName);
        @SuppressWarnings("resource")
        BufferedReader reader = new BufferedReader(file);
        while ((line = reader.readLine()) != null) {
                     //do lots of stuff to sort the data into lists etc
        }
    } catch (Exception e) {
        System.out.println("INPUT DATA WAS NOT FOUND, PLEASE PLACE FILE HERE: " + System.getProperty("user.dir"));
        throw new RuntimeException(e);
    } finally {
        if (file != null) {
            try {
                file.close();
            } catch (IOException e) {
                //Ignore issues during closing
            }
        }
    }
InformationsquelleAutor Ofek | 2014-04-06



One Reply
  1. 9

    È questa parte che sta causando problemi:

    while ((line = reader.readLine()) != null) {
    
          //do lots of stuff to sort the data into lists etc
          //**** Something assumes line is not empty *******
        }

    Per ignorare le righe vuote, aggiungere questo controllo per assicurarsi che la linea ha qualcosa:

    while ((line = reader.readLine()) != null) {
        if(line.length() > 0) {
          //do lots of stuff to sort the data into lists etc
        }           
    }
    • In realtà si dovrebbe fare if(line.trim().length() > 0) per catturare le righe vuote che possono avere spazio bianco.
    • Evviva, è un semplice fix!
    • Dipende da come si definisce il ‘vuoto’. Se ‘vuoto’ linee non chiude spazi, allora sì, si vorrà applicare trim(). Se le righe vuote solo linea-caratteri di terminazione, reader.readLine() restituisce una stringa vuota.
    • questo non sta per essere un problema se si è solo in lettura nel computer i file generati (che sono improbabile per aggiungere necessari spazi bianchi). Ma è qualcosa che si dovrebbe essere cauti quando si legge in generate manualmente ingresso (dove gli utenti possono accidentalmente o inconsapevolmente ingresso inutilmente lo spazio bianco).

Lascia un commento