À l'aide de délimiteur lors de la lecture d'un fichier
J'ai peu d'expérience à l'aide de séparateurs et j'ai besoin de lire un fichier texte qui stocke plusieurs objets dont les données sont stockées dans des lignes simples séparés par des virgules (","). Différentes chaînes sont ensuite utilisées pour créer un nouvel objet est ajouté à une liste de tableaux.
Amadeus,Drama,160 Mins.,1984,14.83
As Good As It Gets,Drama,139 Mins.,1998,11.3
Batman,Action,126 Mins.,1989,10.15
Billy Elliot,Drama,111 Mins.,2001,10.23
Blade Runner,Science Fiction,117 Mins.,1982,11.98
Shadowlands,Drama,133 Mins.,1993,9.89
Shrek,Animation,93 Mins,2001,15.99
Snatch,Action,103 Mins,2001,20.67
The Lord of the Rings,Fantasy,178 Mins,2001,25.87
Je suis en utilisant le Scanner pour lire le fichier, mais j'ai un pas trouvé d'erreur et le fichier est stocké dans une chaîne:
Scanner read = new Scanner (new File("datafile.txt"));
read.useDelimiter(",");
String title, category, runningTime, year, price;
while (read.hasNext())
{
title = read.nextLine();
category = read.nextLine();
runningTime = read.nextLine();
year = read.nextLine();
price = read.nextLine();
System.out.println(title + " " + category + " " + runningTime + " " +
year + " " + price + "\n"); //just for debugging
}
read.close();
utilisation
read.next()
au lieu de nextLine()
.OriginalL'auteur Robert Spratlin | 2013-01-09
Vous devez vous connecter pour publier un commentaire.
Lire.next() au lieu de lire.nextLine()
OriginalL'auteur muffy
Je pense que vous voulez l'appeler
.next()
qui retourne une Chaîne de caractères au lieu de.nextLine()
. Votre.nextLine()
appel est en passant la ligne en cours.OriginalL'auteur majorbanzai
Vous devriez être en utilisant
next();
où vous utiliseznextLine();
Regarder le tutoriel: http://docs.oracle.com/javase/tutorial/essential/io/scanning.html
Avis les lignes:
OriginalL'auteur mcalex
Vous pouvez également utiliser une Chaîne de caractères.split() de la fonction de convertir la chaîne en un tableau de chaînes de caractères, puis itérer sur chacun d'eux pour vos valeurs.
Comment convertir une Chaîne séparée par des virgules de ArrayList? voir ce pour plus de détails.
OriginalL'auteur Aniket Inge
Une question est:
Retourne vrai si le scanner a un autre jeton dans son entrée. Pas l'ensemble de la ligne. Vous avez besoin d'utiliser hasNextLine()
Vous faites nextLine() trois fois. Je pense que ce que vous devez faire est de lire la ligne, et la séparation de la ligne.
OriginalL'auteur kosa
Toutes les réponses ci-dessus sont en droit et en fait de même. Cependant, un point important, tout le monde devrait se rappeler que la
Scanner
a une taille de buffer de 1024. Cela signifie que si la longueur du texte délimité par des est plus, l'analyse s'arrête.Donc, un peu d'amélioration de la solution donnée, utilisez
BufferedReader
au lieu de directement de transmettre le fichier à laScanner
. Exemple:OriginalL'auteur user846316