IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

remplissage d'un fichier texte échoué suite à une opération StringTokenizer()


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 128
    Par défaut remplissage d'un fichier texte échoué suite à une opération StringTokenizer()
    bonsoir!

    après avoir récupéré le contenu texte d'un fichier, j'ai mis le code suivant pour transférer ce contenu vers un autre fichier.
    mais je voulais le transférer après avoir fait un traitement avec StringTokenizer() qui génère le contenu texte en mots séparés ; je veux en fait écrire dans le nouveau fichier le contenu du premier fichier mais sous forme de mots séparés chacun dans une ligne.
    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     StringTokenizer str = new StringTokenizer(string,"/;, !?.",false);
    			 while (str.hasMoreTokens()) {
    				String texte =str.nextToken();
    				System.out.println(texte);
    				File leFichier = new File("chemin_fichier.txt");
    				FileOutputStream fich = new FileOutputStream(leFichier);
    				if(leFichier.exists()){
    					fich.write(texte.getBytes());
    					fich.flush();
    					fich.close();
    				}
    sachant que l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(texte);
    affiche en sortie les mots séparés, c'est à dire que le StringTokenizer fonctionne très bien, je ne comprends pas pourquoi le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fich.write(texte.getBytes());
    ne me génère pas les mots séparés dans mon nouveau fichier, qui reste toujours vide. alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fich.write(string.getBytes());
    fonctionne bien et remplit le nouveau fichier avec le contenu texte du premier fichier.

    merci d'avance pour toute réponse !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oufti:

    alors d'abord on ouvre pas un fichier dans une boucle, on l'ouvre avant la boucle et on le ferme après la boucle, sinon ca va être la catastrophe coté performances.

    Ensuite, utilisez un OutputStreamWriter pour faire une sortie texte. L'utilisation d'une sortie binaire comme vous faites n'est vraiment pas géniale.

    Enfin, comme sont nom l'indique, println rajoute un retour chariot après le message, a vous d'ajouter aussi vos retours chariot dans votre fichier entre chaque mot.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 128
    Par défaut
    d'abord merci pour la première remarque

    et si j'ai bien compris, je dois utiliser donc un buffredwriter pour la sortie texte

    reste le truc du retour chariot, avez-vous une suggestion?

    merci!

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    un writer, on s'en fout qu'il soit buffered ou pas. Pour le retour chariot, suffit d'envoyer un caractère de retour chariot dans le stream.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/11/2010, 21h05
  2. [AJAX] Rafraichissement d'un fichier texte inclu dans une page
    Par gforce dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/01/2007, 11h41
  3. Réponses: 2
    Dernier message: 19/08/2006, 12h47
  4. Réponses: 7
    Dernier message: 23/03/2005, 22h23
  5. Réponses: 2
    Dernier message: 16/12/2004, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo