none
PathTooLongException RRS feed

  • Question

  • J'ai un problème de PathTooLongException suite à un GetFiles().
    code :

      1. foreach (FileInfo fi in Dir.GetFiles())
      2. {
      3. nbf++;
      4. try
      5. {
      6. td += fi.Length;
      7. tsd += (fi.Length / (
      8. int)blockSize) * (int)blockSize;
      9. if ((fi.Length % (int)blockSize) > 0) tsd += (int)blockSize;
      10. }
      11. catch (Exception err)
      12. {
      13. String ERR = " " + err;
      14. // MessageBox pour les tests
      15. MessageBox.Show(@"Problème de FileInfo.length sur " + Environment.NewLine +
      16. "Message :" + err.Message + Environment.NewLine +
      17. "Code erreur :" + err + Environment.NewLine);
      18. //myTextBoxMsg.AppendText(@"Problme de FileInfo.length sur " + Environment.NewLine +
      19. // "Message :" + err.Message + Environment.NewLine +
      20. // "Code erreur :" + err + Environment.NewLine);
      21. continue;
      22. }
      L'exception se produit sur l'instruction td += fi.Length;
      En effet le path complet du fichier traité est largement supérieur à 260.
      Windows Explorer affiche le dossier et les fichiers qu'il contient mais la fonction propriétées pour le dossier indique 0 fichiers alors qu'il y en a 2 et la fonction propriété n'est pas disponible pour les fichiers.
      J'ai trouvé sur le forum beaucoup d'info sur l'exception mais pas de solution. 

      Y-a-til une solution ?

      la variable Max_Path est-elle modifiable ?

      Merci pour vos réponses.


      riri
      lundi 18 janvier 2010 10:15

    Réponses

    • Bonjour,

      Tu as un article ici qui pourait peut-être t'aider :
      http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx

      C'est un article en 3 parties qui t'explique comment faire pour mettre en place soit un chemin de longueur maximale beaucoup plus long, ils parlent de 32K mais avec des inconvenients, soit d'autres workarounds, avec les references vers la MSDN pour t'expliquer.

      Cordialement,

      Thomas
      Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
      • Marqué comme réponse BRI_67 lundi 18 janvier 2010 13:17
      lundi 18 janvier 2010 11:54
    • Merci bien.

      Cela m'a bien aidé.
      Je connaissais déjà les Api Windows pour les avoir utilisés mais je ne connaissais pas l'utilisation du préfix "\\?\" ou "\\?\UNC\".

      Cela par contre m'a permis de constater que Windows Explorer (Windows XP SP3) ne s'embarrasse pas de floriture.
      En effet si on utilise la fonction propriété du menu contextuel pour un répertoire (click droit), il ne comptabilise pas tout simplement les fichiers du répertoire dont le chemin complet est trop long ni ceux des sous répertoires dont le chemin est trop long, ni les sous-répertoires dont le chemin complet est trop long.
      De même si on fait un click droit sur un fichier dont le chemin complet est trop long il ne propose même pas la fonction propriété.
      Autre remarque sur Visual studio C# :
      L'exception généré dans ce cas de figure n'est pas "PathTooLongException" mais "FileNotFoundException".

      Merci encore pour votre aide.


      riri
      • Marqué comme réponse BRI_67 samedi 23 janvier 2010 17:33
      samedi 23 janvier 2010 17:29

    Toutes les réponses

    • Bonjour,

      Tu as un article ici qui pourait peut-être t'aider :
      http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx

      C'est un article en 3 parties qui t'explique comment faire pour mettre en place soit un chemin de longueur maximale beaucoup plus long, ils parlent de 32K mais avec des inconvenients, soit d'autres workarounds, avec les references vers la MSDN pour t'expliquer.

      Cordialement,

      Thomas
      Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
      • Marqué comme réponse BRI_67 lundi 18 janvier 2010 13:17
      lundi 18 janvier 2010 11:54
    • Je vais analyser tous cela
      merci bien
      riri
      lundi 18 janvier 2010 13:17
    • Merci bien.

      Cela m'a bien aidé.
      Je connaissais déjà les Api Windows pour les avoir utilisés mais je ne connaissais pas l'utilisation du préfix "\\?\" ou "\\?\UNC\".

      Cela par contre m'a permis de constater que Windows Explorer (Windows XP SP3) ne s'embarrasse pas de floriture.
      En effet si on utilise la fonction propriété du menu contextuel pour un répertoire (click droit), il ne comptabilise pas tout simplement les fichiers du répertoire dont le chemin complet est trop long ni ceux des sous répertoires dont le chemin est trop long, ni les sous-répertoires dont le chemin complet est trop long.
      De même si on fait un click droit sur un fichier dont le chemin complet est trop long il ne propose même pas la fonction propriété.
      Autre remarque sur Visual studio C# :
      L'exception généré dans ce cas de figure n'est pas "PathTooLongException" mais "FileNotFoundException".

      Merci encore pour votre aide.


      riri
      • Marqué comme réponse BRI_67 samedi 23 janvier 2010 17:33
      samedi 23 janvier 2010 17:29