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

C# Discussion :

Choisir un répertoire de sauvegarde


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut Choisir un répertoire de sauvegarde
    Bonjour,

    J'aimerai que l'utilisateur puisse enregistrer un fichier texte dans un répertoire qu'il choisit.
    Plus précisément, l'utilisateur entre un nom de fichier dans un textBox1 et ensuite lorsqu'il appuie sur un bouton, une fenêtre de dialogue s'ouvre pour qu'il puisse choisir l'endroit d'enregistrement de son fichier texte.

    Dans ce fichier texte apparaît plusieurs données (comme l'heure, des commentaires entrés dans un textBox2, etc...)

    Si quelqu'un sait comment faire pour que l'utilisateur puisse choisir le répertoire de sauvegarde de son fichier, cela me serait très utile parce que je bloque :/

    Je vous remercie d'avance !

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    en WinForm il existe un contrôle tout fait pour ça : SaveFileDialog.
    Je te laisse regarder son fonctionnement sur cette fiche MSDN (pas bien compliqué).

    Bon dev.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Je te remercie de ta réponse rapide ! C'est bien ça dont j'ai besoin.

    J'aimerai que dans le fichier texte, l'heure apparaisse et ensuite les commentaires entrés par l'utilisateur dans un textBox1.
    J'ai alors entré ce code :

    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
     
    private void Save_Click(object sender, EventArgs e)
            {
                Stream fichier;
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();
     
                saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
                saveFileDialog1.FilterIndex = 2;
                saveFileDialog1.RestoreDirectory = true;
     
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    if ((fichier = saveFileDialog1.OpenFile()) != null)
                    {
                        // Code to write the stream goes here.
                        fichier.WriteLine(DateTime.Now.ToString("dd/MM/yy HH:mm"));
                        fichier.WriteLine(textBox1.Text);
                        fichier.Close();
                    }
                }
            }
    J'ai essayé d'appliquer tout ça à l'aide de l'exemple MSDN mais le WriteLine est en erreur et je ne vois pas comment faire autrement...

    Merci d'avance,

    sebbur

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut en fait tu ne peux manipuler du texte dans un flux (Stream) tel quel.
    Il faut lui dire si c'est un flux de lecture (StreamReader) par exemple (il en existe d’autres) ou bien dans ton cas un flux d'écriture (StreamWriter).
    Utilises aussi l'instruction using qui facilite l'utilisation des ressources (c'est un best practice mais ça apporte en lisibilité et ça peut éviter quelques problèmes) : https://msdn.microsoft.com/fr-fr/library/yh598w02.aspx

    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
     
    using (SaveFileDialog sfd = new SaveFileDialog())
                    {
                        sfd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
                        sfd.FilterIndex = 2;
                        sfd.RestoreDirectory = true;
     
                        if (sfd.ShowDialog() == DialogResult.OK)
                        {
                            using (var fichier = new StreamWriter(sfd.OpenFile()))
                            {
                                // Code to write the stream goes here.
                                fichier.WriteLine(DateTime.Now.ToString("dd/MM/yy HH:mm"));
                                fichier.WriteLine(textBox1.Text);
                                fichier.Close();
                            }
                        }
                    }

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Petite remarque sur le code lead8209 : en se servant d'un using plus besoin de faire un fichier.Close().
    Un copier/coller un peu rapide m'est avis
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Je vous remercie de vos aides et de vos indications, elles m'ont été très utiles !
    Le code fonctionne très bien et c'est exactement ce que je voulais avoir !

    Encore merci à vous, et bonne journée

    Sebbur

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Et j'ai juste une dernière question, comment fait-on pour mettre plusieurs données sur la même ligne ?

    Merci d'avance

    Sebbur

  8. #8
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Il suffit d'utiliser la méthode Write() plutôt que WriteLine()
    Plus je connais de langages, plus j'aime le C.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Je te remercie Jopopmk ! C'est bien ce que je souhaitais avoir

    Merci encore pour tout, et bonne journée à tous !

    Sebbur

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Petite remarque sur le code lead8209 : en se servant d'un using plus besoin de faire un fichier.Close().
    Un copier/coller un peu rapide m'est avis
    C'est tout à fait ça

  11. #11
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Un sujet "résolu" n'est pas nécessairement un sujet "fermé"

    Citation Envoyé par sebbur
    [from MP] [..] Comment je peux faire pour que dans mon fichier texte, à la première ligne apparaisse le nom du fichier que l'utilisateur aura entré ?
    Tu peux récupérer le nom du fichier choisi par l'utilisateur via l'attribut FileName de ton SaveFileDialog. Par contre tu auras le nom avec son chemin complet. Si tu ne veux que le nom du fichier tu peux utiliser la méthode Path.GetFileName (using System.IO nécessaire). Après, pour l'écrire dans ton fichier tu sais maintenant comment faire.
    Plus je connais de langages, plus j'aime le C.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    J'en prends note. Je pensais qu'étant donné que le sujet est "résolu" vous n'alliez plus y jeter un œil puisque le problème a logiquement sa solution. Je le saurai pour la prochaine fois

    Merci de ta réponse, c'est bien cette méthode que je dois utiliser. En revanche j'ai regardé sur MSDN et il faut informer un chemin d'accès pour trouver le nom du fichier. Vu que dans mon cas c'est l'utilisateur qui choisira l'endroit de sa sauvegarde, comment dois-je faire ?

    Merci encore de prendre le temps de me répondre et de m'aider à trouver des solutions,

    Sebbur

  13. #13
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Le chemin d'accès que tu files à manger à Path.GetFileName() c'est ce que te retourne l'attribut SaveFileDialog.FileName.
    En conservant les noms de contrôles/variables du code de lead8209 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier.WriteLine(Path.GetFileName(sfd.FileName));
    Plus je connais de langages, plus j'aime le C.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Je te remercie, ça fonctionne très bien !

    J'avais essayé mais je n'avais pas mis ".FileName" après "sfd" du coup j'avais une erreur..

    En tout cas maintenant ça fonctionne, et je sais comment faire tout ça ! Je vous remercie encore tous pour votre aide qui m'a été précieuse !

    Bonne journée,

    Sebbur

  15. #15
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Faut se servir de l’auto-complétion ça a bien amélioré le développement ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Choisir le répertoire de sauvegarde pour une exportation
    Par neiluj26 dans le forum VBA Access
    Réponses: 10
    Dernier message: 08/07/2011, 13h14
  2. Choisir un répertoire puis sauvegarder
    Par new_matlab dans le forum MATLAB
    Réponses: 2
    Dernier message: 24/04/2009, 11h27
  3. Réponses: 6
    Dernier message: 11/05/2006, 18h33
  4. Réponses: 7
    Dernier message: 15/08/2005, 18h13
  5. [FileDialog] choisir un répertoire
    Par phoebe dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 16/07/2004, 10h02

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