J'ai un fichier de test suivant: Quelle est la meilleure façon d'analyser à travers chaque ligne de ce fichier, créant un objet avec (nom, nom de famille, daté de naissance)? Bien sûr, il s'agit simplement d'un échantillon, le fichier réel a de nombreux enregistrements. P> P>
5 Réponses :
regarder bufferedreader code> classe. Il a
readline code> méthode. Ensuite, vous voudrez peut-être diviser chaque ligne avec des séparateurs d'espace pour construire obtenir chaque champ individuel. P>
import java.io.*; class Record { String first; String last; String date; public Record(String first, String last, String date){ this.first = first; this.last = last; this.date = date; } public static void main(String args[]){ try{ FileInputStream fstream = new FileInputStream("textfile.txt"); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; while ((strLine = br.readLine()) != null) { String[] tokens = strLine.split(" "); Record record = new Record(tokens[0],tokens[1],tokens[2]);//process record , etc } in.close(); } catch (Exception e){ System.err.println("Error: " + e.getMessage()); } } }
Je mettrai à jour ce code dans une minute pour inclure la création d'objets.
@Brandon -La question a clairement une balise «devoirs» ... Je ne pense pas que vous faites de mieux la vie de Mastodon en donnant la solution complète.
Eep, excuses pour donner la réponse.
Bien que je vais utiliser la solution avec Scanner ce que je faisais précédemment, je choisis votre réponse car il est plus complet.
Un type de réponse étrange, ma réponse, tout explique sans montrer de code (que je ressens est probablement la meilleure réponse pour une question de devoirs). Ah bien, tant que vous apprenez quelque chose sur le chemin :-)
Vous devriez obtenir des points bonus pour avoir une réponse acceptée avec un net de -1 votes.
Utilisez str.split ("\\ +")
Au premier abord, je suggérerais que le StringTokensizer serait votre ami ici, mais avoir une certaine expérience pour que cela soit réel, dans les applications métier, ce que vous ne pouvez probablement pas garantir, c'est que le nom de famille est un seul nom (c'est-à-dire quelqu'un avec un double Nom de famille, non hyphéqué ne vous causerait de problèmes.
Si vous pouvez garantir l'intégrité des données, vous seriez P>
BufferedReader read = new BufferedReader(new FileReader("yourfile.txt")); String line = null; while( (line = read.readLine()) != null) { StringTokenizer tokens = new StringTokenizer(line); String firstname = tokens.nextToken(); ...etc etc }
Utilisez un FileReader pour lire des caractères Dans un fichier, utilisez un bufferedreader pour la mise en mémoire tampon Ces caractères afin que vous puissiez les lire comme des lignes. Ensuite, vous avez le choix .. personnellement, j'utiliserais string.split () à scinder sur le WhitSpace vous donnant un beau tableau à chaîne, vous pouvez également joindre cette chaîne. p>
Bien sûr, vous devez penser à ce qui se passerait si quelqu'un a un deuxième prénom et tel. P>
Scanner scanner = new Scanner(file).useDelimiter(",");
Qu'avez-vous appris? Normalement à l'école au moins pour moi, c'était la classe de scanner. Cela aidera à déterminer ce qui vous convient le mieux.
J'avais l'intention d'utiliser Scanner, mais était plus intéressé si StringTokenzerizer ou StreamToletzer doit être utilisé.
Vous pouvez également utiliser le tokenizer. Fondamentalement scanner la ligne, utilisez Tokenizer avec un délimiteur d'espace. StringTokenizer ST = New StringTokenizer ("Ceci est un test"); tandis que (st.hasmoretakens ()) {system.out.println (st.nextTokokoken ()); }