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 :

Problème a la création de repertoire


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut Problème a la création de repertoire
    Bonjour,

    Je fais des traitements de copie de fichiers de SharePoint vers le local, mais je ne vais pas parler de SharePoint (c'et juste le contexte au cas ou

    Bref, je parcours une arboresence SharePoint (dossiers et docments), comme les copies de SP vers local peuvent etre faite plusieurs fois, avant de faire une copie en local, je supprime le dossier que je traite (donc son contenu) ensuite je le recrée et je fait mon traitement de copie!

    seulement voila, en faisait des tests, je me suis rendu compte que certaine fois, le dossier qui contient mes documents "disparaissait"!
    suite a de nombreux tests(des fois il disparait, d'autres fois non ), je me suis rendu compte qu'apres la suppression, le répertoire n'etait pas toujours recré! et donc plantage du traitement de copie!
    Ci dessus vou avez (en rouge) mon code natif (celui qui plante).

    Je me demande pourquoi?
    J'ai ajouté un try/cach et il n'y a jamais d'erreur!
    Je me demande s'il ne faut pas un certain temps à la création du répertoire, ce qui fait que s'il est plus lent à la création, plantage du traitement :X
    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
    
    
    if (Directory.Exists(localPath + "\\" + Folder.Name))
    {
            // si le dossier local d'une direction existe
            // on le supprime ainsi on a toujours uniquement les fichiers présents sur SPS
            Directory.Delete(localPath + "\\" + Folder.Name, true);
    }
    // on crée ou recrée le dossier de la direction
    DirectoryInfo di = Directory.CreateDirectory(localPath + "\\" + Folder.Name);
    int i = 0;
    while (!di.Exists)
    {
           di = Directory.CreateDirectory(localPath + "\\" + Folder.Name);
           i++;
    }
    Si vous avez des éléments de réponses sur le pourquoi du comment de ce comportement

    en attendant, j'ai trouvé une astuce, j'ai ajouté dans mon code (en vert) une vérification du fichier, tant qu'il n'est pas crée, je le recrée! en y mettant un compteur je me suis rendu copte qu'il n'y passait qu'une seule fois

    merki

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    Par défaut
    Pour tester si la création du répertoire prend du temps, dans le code vert fait juste un while(!Directory.Exist());
    Ensuite, faut vérifier que le path ne contient pas de caractères spéciaux (on sais jamais, il faut tester si les dossier qui plantent et voir si il ont tous des caractères spéciaux espace compris)

    En gros, faut vérifier la construction de tes path voir changé le codage de la chaine.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    j'ai changé mon 1er while par
    while (!Directory.Exists(localPath + "\\" + Folder.Name))
    {
    i++;
    }

    est ça boucle a l'infini :X

    il ne le crée pas la 1ere fois

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    Par défaut
    Il faudrait que tu m'en dise un peu plus sur ce que contient localpath et Folder.Name lors d'un plantage et lors d'une réussite

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    localPath = "D:\SPSDeliberations\Conseil du 3 janvier 2008"
    Folder.Name = "Direction administration générale et DRH"

    une fois ça a planté, une autre fois non

    et généralement mes dossiers sont sous cette forme, avec le folder.name qui change et a part les espaces et les caratères accentués, il n'y a pas d'autres caractères spéciaux!

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Essaye avec une tempo après la délétion, avant la création, et regarde avec ta boucle si cel boucle à l'infini.
    Je me demande s'il n'arrive pas à recréer le répertoire parce que la délétion prend du temps.

    Essaye dans un bout de code de voir si tu as une exception levée lorsque tu tentes de créer un répertoire qui existe déjà.

    Fait voir le try catch que tu as mis.
    Essaye en catchant Exception, pour être sur de ne pas avoir mis le mauvais filtre.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    J'ai contourné le problème en supprimant le contenu du répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if (!Directory.Exists(localPath + "\\" + Folder.Name))
    {
         // si le dossier local d'une direction n'existe pas, on le crée
         Directory.CreateDirectory(localPath + "\\" + Folder.Name);
    }
    else
    {
         //sinon on supprime tous son contenu
         foreach (string f in Directory.GetFiles(localPath + "\\" + Folder.Name))
         {
              File.Delete(f);
         }
    }

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

Discussions similaires

  1. probléme avec la création de table Mysql 5
    Par developpeur_mehdi dans le forum Outils
    Réponses: 3
    Dernier message: 19/10/2005, 19h08
  2. Problème avec la création d'un composant
    Par jeromelef dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/10/2005, 00h51
  3. [Eclipse 3.0] [Tomcat] problème dans la création du .war
    Par lipao17 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/03/2005, 13h45
  4. Problème THEORIQUE de création de ma table...
    Par Mr.KisS dans le forum Requêtes
    Réponses: 15
    Dernier message: 06/04/2004, 09h29
  5. Réponses: 2
    Dernier message: 29/03/2004, 18h29

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