Ecrire le output dans un fichier.txt

Résolu
sch16 Messages postés 2 Statut Membre -  
sch16 Messages postés 2 Statut Membre -
Bonjour

voici mon code java , le résultat est la dans la console mais j arrive pas a l enregistrer dans mon fichier output.txt, quoique j ai mi la boucle et j ai fermé le fichier
PS: c est un code de racinisation ,le résultat est un ensemble de mot ,chaque mot dans une ligne
MERCI infiniment pour votre aide

try {

                String sCurrentLine;
                br = new BufferedReader(new FileReader("input.txt"));
                SnowballStemmer stemmer = (SnowballStemmer) new frenchStemmer();
                PrintWriter out =  new PrintWriter (new FileWriter ("output.txt")) ;

                while ((sCurrentLine = br.readLine()) != null) {

                        String[] tokens = sCurrentLine.split(" ");    
                        for (String string : tokens) {
                            stemmer.setCurrent(string);
                            stemmer.stem();
                            String stemmed = stemmer.getCurrent();
                            System.out.println(stemmed);
                          //  out.print(stemmed);
                            
                            while ( true) {
                             String line = br.readLine();
                             if(line == null)
                              break;
                             for(String str : line.split("\\s+"))
                               out.println(str);
                            }
                            out.print(stemmed);
                            out.close();
                        }

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

Tu fermes ton fichier trop tôt.

Qu'est-ce que tu as voulu faire avec ton
while (true)
?
Avec le seul test
if(line == null)
cette boucle va lire tout le reste de ton fichier, dès le premier token de ta boucle for...

De plus, le
out.close
devrait être après la boucle
while ((sCurrentLine
mais tu l'as mis à l'intérieur de la boucle
for (String string
...

Remarque : je t'invite à utiliser la classe Scanner pour manipuler des fichiers texte, c'est plus pratique qu'une imbrication de FileReader/BufferedReader.

try (Scanner in = new Scanner(new File("input.txt")); PrintWriter out = new PrintWriter("output.txt")) {
    SnowballStemmer stemmer = new FrenchStemmer();
    while (in.hasNextLine()) {
        for (String string : in.nextLine().split("\\s+")) {
            stemmer.setCurrent(string);
            stemmer.stem();
            String stemmed = stemmer.getCurrent();
            System.out.println(stemmed);
            out.println(stemmed);
        }
    }
} catch (RuntimeException | FileNotFoundException e) {
    e.printStackTrace();
}

NB. J'ai utilisé le try-with-resources ce qui évite d'avoir à gérer les close.
1
sch16 Messages postés 2 Statut Membre
 
Merci , ca marche (y)
0