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 :

Ecrire et manipulations sur les fichiers en Java


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Ecrire et manipulations sur les fichiers en Java
    Bonjour chère communauté,

    Je suis bloqué. Sinon je ne serai pas ici x)
    On m'a donné les exercices suivants à réaliser
    Créez un programme qui demande à l'utilisateur d'entrer un nom de fichier et du texte quelconque
    et qui enregistre ce texte dans un fichier en utilisant le nom donné.
    J'ai réussi à faire ceci, et ça marche plutôt bien :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    package exercice1;
     
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.*;
     
    public class Exercice1 {
     
    	/*Créez un programme qui demander à l'utilisateur d'entrer un nom de fichier et du texte quelconque 
    	et qui enregistre ce texte dans un fichier en utilisant le nom donné.*/
     
    	public static void main(String args []) throws IOException{
     
    		String nom;
    		String texte;
     
    		Scanner sc = new Scanner (System.in);
     
    		System.out.println("Ecrire le nom");
    		nom = sc.nextLine();
     
    		System.out.println("Saisir le texte");
    		texte = sc.nextLine();
     
    		File fichier = new File("D:\\"+nom+".txt");
    		PrintWriter pw = new PrintWriter(new FileWriter(fichier)) ;
    		pw.append(texte);
    		pw.println();
    		pw.close();
    	}
     
    }
    Maintenant, le deuxième exercice me demande quelque chose que je n'arrive pas du tout à faire, malgré toutes mes recherches et test >.<

    Améliorez Exercice1.java en ajoutant une boucle qui permet d'entrer plusieurs textes quelconques. Les textes saisis par l'utilisateur
    sont enregistrés directement dans le fichier. Lorsque l'utilisateur entre une ligne vide, le programme ferme le fichier et se termine.
    Ce que j'ai tenté de faire :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package exercice2;
     
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.*;
     
    public class Exercice2 {
     
    	/*Améliorez Exercice1.java en ajoutant une boucle qui permet d'entrer plusieurs textes quelconques. Les textes saisis par l'utilisateur
    	 * sont enregistrés directement dans le fichier. Lorsque l'utilisateur entre une ligne vide, le programme ferme le fichier et se termine.
    	 */
     
    		public static void main(String args []) throws IOException{
     
    FileWriter writer = null;
    String texte = "texte à insérer à la fin du fichier";
     
    try{
         writer = new FileWriter("fichier.txt", true);
         writer.write(texte,0,texte.length());}
     
    catch(IOException ex){
        ex.printStackTrace();}
     
    finally{
      if(writer != null){
         writer.close();
      }
    }
     
    }
     
    }
    J'ai fait ça il y a plusieurs semaines (étant en alternance, je n'ai pas continué le programme récemment) et j'étais même passé à autre chose, donc je ne me souviens plus vraiment de ce que j'avais écrit, et pourquoi je l'avais écrit x)

    J'aimerais vraiment savoir ce qui ne va pas, pourquoi ça ne fonctionne pas, et qu'est-ce qu'il me manque comme connaissances et fonctions pour réussir cet exercice ?
    Merci par avance de votre aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu devrais repartir plutôt de ton premier code déjà :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    package exercice1;
     
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.*;
     
    public class Exercice1 {
     
    	/*Créez un programme qui demander à l'utilisateur d'entrer un nom de fichier et du texte quelconque 
    	et qui enregistre ce texte dans un fichier en utilisant le nom donné.*/
     
    	public static void main(String args []) throws IOException{
     
    		String nom;
    		String texte;
     
    		Scanner sc = new Scanner (System.in);
     
    		System.out.println("Ecrire le nom");
    		nom = sc.nextLine();
     
    		System.out.println("Saisir le texte");
    		texte = sc.nextLine();
     
    		File fichier = new File("D:\\"+nom+".txt");
    		PrintWriter pw = new PrintWriter(new FileWriter(fichier)) ;
    		pw.append(texte);
    		pw.println();
    		pw.close();
    	}
     
    }
    Ensuite, si tu lis le sujet de l'exercice 2, tu as la réponse quasiment en toutes lettres :

    1. "permet d'entrer plusieurs textes quelconques" : ceci va se traduire forcément par une boucle, dans laquelle il y aura donc la saisie d'un texte :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      System.out.println("Saisir le texte");
      		texte = sc.nextLine();
    2. Les textes saisis par l'utilisateur sont enregistrés directement dans le fichier. : donc il faut que le fichier soit ouvert avant la boucle, et que chaque fois qu'on saisit un texte, il soit écrit dans le fichier ouvert, ce que tu fais dans ton premier code par
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      pw.append(texte);
      		pw.println();
    3. Lorsque l'utilisateur entre une ligne vide, le programme ferme le fichier et se termine. : la condition pour que la boucle s'arrête est donc texte.isEmpty(). C'est également une condition pour ne pas écrire texte dans le fichier.
    4. Evidemment, on ne ferme le writer que lorsqu'on est sorti de la boucle

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Salut Joel,

    J'ai donc modifié cela en suivant ce que tu m'as dit ; seulement, la partie qui demande "Lorsque l'utilisateur entre une ligne vide, le programme ferme le fichier et se termine" ne semble pas fonctionner avec "texte.isEmpty()". Alors, soit il est mal placé, soit je l'ai mal utilisé. Voire les deux en même temps.

    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
    27
    public static void main(String args []) throws IOException{
     
    			String nom;
    			String texte = "";
     
    			Scanner sc = new Scanner (System.in);
    			System.out.println("Ecrire le nom");
    			nom = sc.nextLine();
     
    			System.out.println("Saisir le texte");
    			texte = sc.nextLine();
     
    			File fichier = new File("D:\\"+nom+".txt");
    			PrintWriter pw = new PrintWriter(new FileWriter(fichier)) ;
     
    			while (texte != "" ){
     
    			pw.append(texte);
    			pw.println();
    			texte.isEmpty();
     
    			}
     
    				pw.close();
    			}
     
    		}

  4. #4
    Invité
    Invité(e)
    Par défaut
    Te retourne un boolean si ta chaine de caractère est vide.

    Il faut donc t'en servir dans le test de ta boucle while, puisqu’actuellement tu n'en fais rien.

    Ne signifie pas 'texte n'est pas vide' mais compare les références de ' texte ' et de ' "" '

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    On ne doit pas tester l'égalité (ou la non égalité) de chaîne avec == ou !=, mais avec equals() (on peut le faire dans certains cas, quand on comprend exactement ce qu'on fait et comment les String fonctionnent en Java). Mais de toute manière pourquoi chercher à tester cette différence comme ça, alors qu'on a la méthode .isEmpty() qui est censée le faire ?

    Ensuite texte.isEmpty(); ne fait aucun test : la valeur de retour n'est pas exploitée.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Vraiment, j'ai essayé... mais je ne comprends pas vos explications. J'en peux plus, j'ai appris sur le tas, je ne connais pas la théorie, seulement la pratique, alors je n'y arrive pas. J'avance à tâton, et ça ne m'aide pas.
    Il me faudrait des explications plus claires...

    J'ai toujours utilisé "while (variable =! 0) ou autres valeurs interdites, jamais utilisé equals().
    Quant à texte.isEmpty, je ne comprends pas non plus comment je dois l'utiliser. Pourtant j'ai déjà utilisé des booleans, mais là, j'suis dans le flou malgré vos explications sur cette ligne de commande.

    Je ne demande qu'à être guidé et aidé, mais s'il-vous-plait, s'il est possible d'être plus précis dans vos explications, parce que ça va bientôt faire deux semaines que je stagne sur ce foutu exercice, j'ai l'impression de devenir dingue et de régresser...

    Pardon si je suis un chouia agressif, j'ai passé mon week-end là-dessus, à essayer pleins de choses, à chercher sur Internet...
    Pourtant, l'exercice n'est pas si dur quoi ! ;_;

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Un algorithme possible est le suivant :

    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ouvrir fichier
    lire texte au clavier
     
    tant que texte n'est pas vide
     
        ecrire texte dans fichier
     
        lire texte au clavier
     
    fin tant que
    fermer fichier

    Maintenant, c'est difficile de dire comme encoder ça en Java sans te donner la solution finale ! Mais normalement, tout ce qu'il y a dans cet algorithme, tu l'as déjà fait dans ton premier exercice, sauf le test "texte n'est pas vide", qui peut s'écrire en Java, de plusieurs manières, dont par exemple :

    1. ! "".equals(texte)
    2. ! texte.isEmpty() (parce que texte.isEmpty() retourne un booléen, qui est vrai quand la chaine est vide, et faux sinon)


    NB : "lire texte au clavier" ça inclut évidemment l'affichage de l'invite

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Ce que je ne comprends pas, c'est en quoi while (texte != "") n'est pas possible ? "" signifie bien "caractère vide" non ? Donc théoriquement, si je fais "Entrée" sur mon clavier, ça devrait compter comme une ligne vide non ? Qu'est-ce que j'ai loupé dans l'aspect concret de ce que j'essayais de réaliser avec cette ligne de commande ?


    EDIT : suis-je obligé d'utiliser un "public boolean equals" pour utiliser equals, et ainsi renvoyer true ou false ? Ou je me complique (à nouveau) la vie ?

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Shidate Kunan Voir le message
    Ce que je ne comprends pas, c'est en quoi while (texte != "") n'est pas possible ? "" signifie bien "caractère vide" non ? Donc théoriquement, si je fais "Entrée" sur mon clavier, ça devrait compter comme une ligne vide non ? Qu'est-ce que j'ai loupé dans l'aspect concret de ce que j'essayais de réaliser avec cette ligne de commande ?
    Il y a 2 sortes de type en Java :

    • les types primitifs (int, long, double, float, boolean, short, byte et char)
    • les classes


    Les variables de type primitifs contiennent des valeurs. Ainsi dans int a=42;, a vaut 42.
    Les variables de type classes contiennent des références d'objet (des adresses de zone mémoire en quelque sorte, si tu préfères).

    L'opérateur == teste l'identité de 2 variables, c'est à dire qu'elle teste l'égalité entre les valeurs dans les variables. Et pour des variables de type classe, ces valeurs sont des références d'objet, pas les "valeurs" des objets, qui sont très souvent des structures beaucoup plus complexes qu'une simple valeur. Donc, pour tester l'égalité entre 2 objets, on utilise equals(). C'est la base. C'est comme ça.

    Pour tester l'égalité entre les objets références par les variables a et b, on fait : if ( a.equals( b ) ) { /*....*/}.

    Lorsqu'on écrirt : if (texte == "") { /*...*/}, on ne teste pas l'égalité entre 2 valeurs de chaines, mais entre 2 références d'objets de classe String. De base, on peut avoir 2 chaines qui vallent "", mais qui sont 2 instances totalement différentes, donc qui n'ont pas la même référence.

    Il existe des fonctionnements internes à Java, qui permettent pourtant dans certains cas que 2 variables de type chaines de même valeur soit identiques (donc pour lesquelles le test par == est vrai), mais ça demande justement une bonne connaissance du fonctionnement de Java, et en particulier des classes qu'on utilise. Dans ce cas, pour dissiper tout risque de tomber sur un cas où les références sont différentes alors que les valeurs des chaînes sont égales, on utilise equals().

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Je crois que ça marche. Je crois que je touche au but.
    Si tu as encore le temps, je te montre ça de suite.

    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
    27
    28
    public static void main(String args []) throws IOException{
     
    			String nom;
    			String texte;
     
    			Scanner sc = new Scanner (System.in);
    			System.out.println("Ecrire le nom");
    			nom = sc.nextLine();
     
    			System.out.println("Saisir le texte");
    			texte = sc.nextLine();
     
    			File fichier = new File("D:\\"+nom+".txt");
    			PrintWriter pw = new PrintWriter(new FileWriter(fichier)) ;
     
    			while (! texte.equals(""){
     
    			texte = sc.nextLine();	
    			pw.append(texte);
    			pw.println();
     
     
    			}
     
    				pw.close();
    			}
     
    		}
    Alors, le seul "souci" qu'il y a :

    - Si je rentre plusieurs lignes, il ne semble ne pas prendre toutes les lignes. En tout cas, pas la première d'après les quelques tests que j'ai effectué. Je ne sais pas si c'est normal ou si quelque chose est à modifier dans mon programme, mais il ne sort pas la première ligne, sûr.
    - Encore une fois, je ne sais pas si c'est normal, ni si c'est réellement demandé par mon exercice, mais si je tente de recompiler le programme, et que je rentre le même nom de fichier que précédemment, que j'écris quelque chose dans ce fichier via la console, ce qui a été écrit précédemment est écrasé par ce que je viens d'écrire. Est-ce normal et surtout, est-ce améliorable ?
    Je pense que oui, vu que ce programme doit fonctionner de la même manière sous Word, et quand on tente d'ouvrir un ancien fichier pour écrire dedans... ce serait très embêtant si ce qu'on avait écrit il y a quelques jours était écrasé à chaque fois qu'on ouvre le fichier texte hahaha

    Merci en tout cas pour ton aide, il va falloir que je persévère pour mieux comprendre la théorie qu'on ne m'apprend pas en entreprise x)

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Shidate Kunan Voir le message
    - Si je rentre plusieurs lignes, il ne semble ne pas prendre toutes les lignes. En tout cas, pas la première d'après les quelques tests que j'ai effectué. Je ne sais pas si c'est normal ou si quelque chose est à modifier dans mon programme, mais il ne sort pas la première ligne, sûr.
    Oui, il ne prend pas la première ligne, parce que dès qu'on entre dans le while, on redemande une nouvelle saisie, sans avoir écrit la première.
    Il suffit de faire (d'où l'ordre des 2 lignes dans mon algorithme précédent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (! texte.equals("") ) { // tant que texte ne contient pas une chaine vide
     
        pw.append(texte);  // on écrit dans le fichier la chaine qui est actuellement dans texte
        pw.println(); // on écrit un passage à la ligne dans le fichier
     
       texte = sc.nextLine(); // on redemande une nouvelle chaine (qui sera testée par la condition du while() lors du bouclage
     
    }

    Citation Envoyé par Shidate Kunan Voir le message
    - Encore une fois, je ne sais pas si c'est normal, ni si c'est réellement demandé par mon exercice, mais si je tente de recompiler le programme, et que je rentre le même nom de fichier que précédemment, que j'écris quelque chose dans ce fichier via la console, ce qui a été écrit précédemment est écrasé par ce que je viens d'écrire. Est-ce normal et surtout, est-ce améliorable ?
    C'est normal : c'est le comportement de base. On réécrit toujours le fichier. On peut modifier ce comportement par défaut, en utilisant le paramètre append lors de la création du FileWriter, en le mettant à true, pour ajouter à la suite du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new FileWriter(fichier, true)
    A noter, que quand on lit le fichier, bien sûr que ça ne supprime pas son contenu. Donc si on veut programmer un éditeur, on n'utilisera pas append : on lira le fichier, on affichera toutes les lignes, qui seront modifiées (ou pas), avec des nouvelles lignes ajoutées, et on réécrira tout en mode append false évidemment (ce que fait le constructeur de FileWriter sans argument append).

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci Joel, j'essayerai ça demain alors !
    Bonne nuit et encore merci de ton aide !

Discussions similaires

  1. Questions sur les fichiers Ressource .RC .RES
    Par dexterz dans le forum Langage
    Réponses: 10
    Dernier message: 01/08/2005, 10h15
  2. Réponses: 3
    Dernier message: 28/10/2004, 08h39
  3. Commande en shell -- Sur les fichiers
    Par OrangeBud dans le forum Linux
    Réponses: 8
    Dernier message: 18/05/2004, 13h13
  4. [C#] Authentification sur les fichiers Pdf
    Par ensisoft dans le forum ASP.NET
    Réponses: 14
    Dernier message: 04/05/2004, 12h10
  5. Réponses: 6
    Dernier message: 28/04/2004, 10h41

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