Lecture de fichier texte et le fait de sauter des lignes vides jusqu'à ce que EOF est atteint
Je suis en train de lire le fichier csv plein de texte; cependant, si il ya une ligne vide dans le milieu quelque part, l'ensemble des pauses et je reçois un:
java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException
Comment pourrais-je aller sur la suppression/ignorer les lignes vides, tant que c'est pas la fin du fichier?
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
}
}
}
OriginalL'auteur Ofek | 2014-04-06
Vous devez vous connecter pour publier un commentaire.
C'est cette partie qui est à l'origine des problèmes:
Pour ignorer les lignes vides, ajouter ce assurez-vous que la ligne a quelque chose:
if(line.trim().length() > 0)
pour attraper des lignes vides qui peuvent avoir de l'espace blanc.Cheers, c'était une très simple fix!
Dépend de comment vous définissez "blank". Si "blanc", les lignes de non-résiliation de caractères espace, alors oui, vous aurez envie d'appliquer
trim()
. Si les lignes vides juste ligne-arrêt personnages,reader.readLine()
retourne une chaîne vide.ce n'est pas un problème si vous vous contentez de lire dans l'ordinateur les fichiers générés (ce qui est rare pour ajouter inutiles dans l'espace blanc). Mais il est quelque chose que vous devriez se méfier des lors de la lecture dans générés manuellement l'entrée (où les utilisateurs peuvent accidentellement ou involontairement entrée inutiles espace blanc).
OriginalL'auteur lreeder