Ecrire le output dans un fichier.txt

Résolu/Fermé
sch16 Messages postés 2 Date d'inscription samedi 2 janvier 2016 Statut Membre Dernière intervention 3 janvier 2016 - Modifié par crapoulou le 2/01/2016 à 22:29
sch16 Messages postés 2 Date d'inscription samedi 2 janvier 2016 Statut Membre Dernière intervention 3 janvier 2016 - 3 janv. 2016 à 21:49
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();
                        }
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
3 janv. 2016 à 11:55
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 Date d'inscription samedi 2 janvier 2016 Statut Membre Dernière intervention 3 janvier 2016
3 janv. 2016 à 21:49
Merci , ca marche (y)
0