import java.io.*; import java.util.*; class CompterMots { public static void main (String[] argv) { // les parametres sont-ils précisés if (argv.length < 2) { System.err.println("usage : java CompterMots fichier_texte fichier_resultat"); } try { Hashtable table = new Hashtable(); BufferedReader entree = new BufferedReader(new FileReader(argv[0])); String ligne; StringTokenizer st; // lecture du fichier ligne à ligne while ((ligne = entree.readLine()) != null) { // creation du découpeur de ligne st = new StringTokenizer(ligne, " ,.;:_-+*/\\.;\n\"'{}()=><\t!?"); // tant qu'il y a des mots while (st.hasMoreTokens()) { // on recupere le mot String mot = st.nextToken(); // on le cherche dans la table Object obj = table.get(mot); // s'il n'y est pas if (obj == null) // on l'ajoute table.put(mot, new Integer(1)); else { // sinon on incrémente Integer prec = (Integer) obj; table.put(mot, new Integer(prec.intValue()+1)); } } } // ne pas oublier de fermer le fichier entree.close(); Enumeration lesMots = table.keys(); // Creation du fichier resultat PrintWriter fluxSortie = new PrintWriter(new FileWriter(argv[1])); // parcours de toutes les entrées de la table de hashing while (lesMots.hasMoreElements()) { // on recupere le mot suivant String mot = (String)lesMots.nextElement(); // on cherche l'Integer correspondant dans la table Object obj = table.get(mot); if (obj == null) System.err.println("erreur"); else { // on affiche sur l'écran et dans le fichier resultat Integer nb = (Integer) obj; System.out.println("Le mot "+mot+" est présent "+nb+" fois"); fluxSortie.println("Le mot "+mot+" est présent "+nb+" fois"); } } // ne pas oublier de fermer le fichier fluxSortie.close(); } catch(FileNotFoundException e1) { System.out.println("Le fichier "+argv[0]+" n'existe pas"); } catch(IOException e2) { System.out.println("Erreur pendant la lecture du fichier"); } } }