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

Entrée/Sortie Java Discussion :

Copie Fichier à l IDENTIQUE en remplacant chaine


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 49
    Points
    49
    Par défaut Copie Fichier à l IDENTIQUE en remplacant chaine
    Salut à tous
    comment ca va ?!
    j'ai bien regardé sur le forum et sur le net et je n'ai pas trouvé de solution à mon pb ...
    voilou je voudrais copier un fichier en remplacant les ' par des \' ...
    ( d'ailleurs pr l'instant il me met juste des ' mais c'est un autre pb ca )
    je fais cela avec des BufferedWriter et des BufferedReader et un StringTokenizer...
    tout se passe bien SAUF au niveau des tabulations il ne m'en garde aucune ...
    et comme il s'agit d'un fichier XML cela m'ennuie un peu .. quelqu'un aurait une idée ?!

    merki !

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Pour ton premier problème (remplacement par une apostrophe au lieu de \'), voilà ce qu'il te faut utiliser (un des deux au choix):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String remplacement = "\\'";
    String remplacement = "\\\'";
    Pour mettre un \ dans une chaîne de caractères, il faut utiliser \\ de même que pour un guillement double ", il faut utiliser \": c'est lié au fait que le guillemet (simple ou double) est un caractère particulier.

    Pour ta culture, \ est un caractère d'échappement qui peut être utilisé dans une chaîne de caractères java uniquement pour \t, \n, \b, \f \r, \\, \" et \' (qui ont tous une signification précise: retour à la ligne, tabulation, retour chariot...)

    Si tu essayes de mettre un \ suivi par autre chose dans ta chaîne, tu t'apercevras que tu obtiens une erreur de compilation...


    En ce qui concerne ton problème de tabulations, pourrais-tu nous donner le code?... parceque là, je n'ai pas réussi à deviner le problème dans mon marc de café

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup pour cette réponse ...
    je connaissais tout ca pour le caractère d'echappement mais que je mette \\' et \\\' ca ne marche pas ... voici mon code ...

    la fin de la fonction ou je crée mon fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ((XmlDocument)document).write(f);
    f.close();
    remplacerApostrophe(fichier);
    et la fonction remplacerAprostrophe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public static void remplacerApostrophe(File f) throws IOException
    	{
    		 FileReader fr = new FileReader(f);
    		 BufferedReader br = new BufferedReader(fr); 
    		 File fichier = new File("./listeFonctionsNouveau.xml");
    		 FileWriter fw = new FileWriter(fichier);
    		 BufferedWriter wr = new BufferedWriter(fw);
     
    		 String ligne = br.readLine();
    		 String mot = "";
    		 while (ligne != null)
    		 {
    			 StringTokenizer str = new StringTokenizer(ligne);
    			 while (str.hasMoreTokens())
    			 {
    				 mot = str.nextToken();
    				 mot = mot.replaceAll("'", "\\'");
    				 wr.write(mot+" ");
    			 }
    			 wr.write("\n");
    			 ligne = br.readLine();
    		 }
    wr.flush():
    wr.close()
    	}
    voilou
    merci d'avance

  4. #4
    Membre régulier Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    Dans ton cas il me semble que le tokenizer ne te sert à rien.
    Tu peux donc écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ligne=fr.readLine();
    while (ligne!= null ){
        ligne=ligne.replaceAll("'", "\\\'");
        fw.write(ligne);
        fw.newLine();
        ligne=fr.readLine();
    }

  5. #5
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    C'est simple : le StringTokenizer sépare une chaîne en tokens, c'est-à-dire les chaînes séparées par des espaces ou... des tabulations. En l'occurrence, lorsque tu utilise le StringTokenizer sur une chaîne qui contient des tabulations, celles-ci sont supprimées puisque seuls les tokens sont gardés. Voilà pourquoi la solution de gelam devrait fonctionner.

  6. #6
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    J'ajouterais à cela que les StringTokenizers sont maintenant à éviter, ua profit de la méthode "split()", qui fait le même travail mais qui est plus facile à manipuler

Discussions similaires

  1. [Batch] Remplacer chaine de caractère dans fichier xml
    Par meumeu73.1 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/09/2011, 08h36
  2. Remplacer chaine de caractère dans fichier .txt
    Par lepiaf69 dans le forum VB.NET
    Réponses: 6
    Dernier message: 07/09/2010, 15h57
  3. [RegEx] remplacement chaine dans fichier regexp
    Par calitom dans le forum Langage
    Réponses: 6
    Dernier message: 20/12/2007, 12h15
  4. remplacer chaine de caractere dans un fichier
    Par Sapache dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 28/09/2007, 17h12
  5. rechercher/remplacer chaine dans fichier txt
    Par C_Mila dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 25/02/2007, 12h06

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