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 :

une variable contient le nom d'un dossier


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut une variable contient le nom d'un dossier
    Bonjour
    je veux importer le contenu d'un fichier dans une base de données sql server, le nom du dossier qui contient le fichier est stocké dans une variable(le nom du dossier sous forme de date):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DateTime dateC = DateTime.Now;
    String DateS = dateC.ToString("dd_MM_yy");
    StreamReader sr = new StreamReader("C:\\DateS\\file.txt", Encoding.Default);
    donc comment indiquer que la variable DateS contient le nom du dossier?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamReader sr = new StreamReader("C:\\DateS\\file.txt", Encoding.Default);
    cette ligne me donne l'erreur suivante:
    Could not find a part of the path 'C:\DateS\file.txt'.
    merci d'avance

  2. #2
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Avec des balises code, ce serait plus lisible...
    donc comment indiquer que la variable DateS contient le nom du dossier?
    Ben c'est toi qui sait ce que sont sencées contenir tes vairables.

    ton message d'erreur indique que le chemin du fichier est incorrect. L'as-tu vérifié ?

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut
    Normalement j'ai chaque jour un nouveau dossier, par exemple pendant une semaine j'aurai 7 dossiers, chaque dossier contient un fichier, les noms des fichiers sont les mêmes mais les noms des dossiers portent une date, citons d'exemple le nom de mon dossier d'aujourd'hui est 24_10_11, et le nom du fichier est file, le nom du dossier de demain est 25_10_11 cependant le nom du fichier est file mais le contenu est différent,
    Je veux faire un programme qui importe chaque jour un fichier et l'insère dans une base de données.

    La seule différence c'est le nom du dossier, qui une date, j'ai pensé à créer une variable « DateS » qui contient la date d'aujourd'hui et l'insérer dans le chemin du fichier, afin que le jour d'après je ferai juste exécuter et le contenu du fichier sera dans la base de données.
    Ma question c’est comment dire au chemin du fichier que cette variable « DateS » contient le nom du fichier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DateTime dateS = DateTime.Now;
    String DateS = dateS.ToString("dd_MM_yy");
    StreamReader sr = new StreamReader("C:\\DateS\\file.alm", Encoding.Default);

  4. #4
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Tout d'abord, je te conseille le format yyyy_MM_dd pour tes noms de dossier. Ils seront plus faciles à retrouver à la main...

    Ensuite, il y a un problème dans ton code :
    Citation Envoyé par jalila2012 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DateTime dateS = DateTime.Now;
    String DateS = dateS.ToString("dd_MM_yy");
    StreamReader sr = new StreamReader("C:\\DateS\\file.alm",Encoding.Default);
    DateS n'est pas vraiment un bon nom directoryName serait mieux, mais ce n'est pas le problème. Tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamReader sr = new StreamReader("C:\\DateS\\file.alm",Encoding.Default);
    Celà te dis d'accéder à un répertoire qui se nomme "DateS".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string path = string.Format(@"C:\{0}\file.alm",DateS);
    te fera une concaténation et remplacera ta variable par son contenu.
    D'une façon générale tu devrais regarder les classes Directory, DirectoryInfo, File, FileInfo et Path qui te renseigneront sur le moyen de manipuler les fichiers et leur chemin. Je te laisse le soin d'aller voir MSDN pour te renseigner.
    Je suis parti de ton code SANS changer les noms de variables que je trouve médiocres.

    Au besoin, tu contrôles, avec les méthodes Exists(), si les répertoires existent bien. J'ai un doute sur la création à la volé du répertoire. D'habitude je crée mon répertoire avec un code tout fait et mutualisé, qui fais des contrôles, puis j'y rajoute mes fichiers. Regarde dans ton disque si le répertoire est bien créé. Ton message d'erreur peut venir de ça.

  5. #5
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Attention, pour formater il s'agit des caractères {} et pas [] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string path = string.Format(@"C:\{0}\file.alm", DateS);
    Par ailleurs, il serait plus élégant d'utiliser les méthodes fournies par la classe Path et prévues à cet effet. Si tu es en FW 4.0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string path = Path.Combine(@"C:\", DateS, "file.alm");
    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string path = Path.Combine(Path.Combine(@"C:\", DateS), "file.alm");
    De plus, une petite boulette dans le format proposé par kheironn, c'est yyyy_MM_dd et pas yyyy_MM_DD.

  6. #6
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Je ne vois pas de quoi tu parles

    Oui, effectivement, j'ai fait deux petites boulettes, je ne sais pas pourquoi j'ai mis des crochets à la place des accolades !

    Pour le format, j'avais un doute entre dd et DD (et pas de VS pour vérifier, ni le courage d'aller fouiller le web pour m'en assurer).
    Enfin, tu confirmes ce que je dis plus bas dans mon poste, aller voir les classes qui vont bien dont Path.

    Par contre, je ne connaissais pas la surcharge du FW 4.0, bien plus pratique qu'avant ! Ils auraient pu y penser plus tôt chez µsof !

    Edit : c'est vrai que c'est mieux avec {}!!! ça me choque moins

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/12/2007, 16h37
  2. Réponses: 2
    Dernier message: 09/11/2007, 15h32
  3. Réponses: 4
    Dernier message: 11/10/2007, 18h35
  4. Tester si une variable contient une regex valide
    Par iblis dans le forum Langage
    Réponses: 6
    Dernier message: 10/08/2007, 00h04
  5. [Variable] Déclarer une variable avec un nom dynamique
    Par jacquesh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2006, 14h11

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