J'utilise le code suivant dans un appel récursif :
var files = di.GetFiles("*.jpg");
di est un DirectoryInfo qui est passé à la fonction. Supposons qu'un fichier tiger.jpg se trouve dans le Root d'un lecteur k. Il arrive que le résultat ne soit pas k : \tiger.jpg mais k : \iger.jpg. Je ne sais pas pourquoi ni comment. Quelqu'un a-t-il déjà eu le même comportement ?
Edit 1 : Il semble se produire même avec des noms de répertoire, car la fonction récursive ne répertorie pas les images dans un sous-répertoire. Je pense qu'il s'agit principalement de FAT (parce qu'il lit généralement à partir de supports tels que des cartes SD ou des clés USB, parfois à partir d'un DVD ou d'un CD).
Le nom complet de chaque objet FileInfo retourné est signalé par un événement. Le destinataire crée un nouvel objet qui prend le chemin comme argument du constructeur. Le constructeur appelle ensuite une méthode qui utilise le chemin pour obtenir des informations sur les fichiers jpeg :
FileStream fs = File.Open ( this.Path, FileMode.Open );
Image img = Image.FromStream ( fs, false, false );
C'est ici que l'exception se produit. Comme j'obtiens les fichiers à partir d'un appel à un composant du framework, je ne vérifie pas explicitement s'ils existent à nouveau - je peux intégrer cela dans le système, mais cela ne résout pas mon problème.
Une chose que j'ai oubliée : cela ne se produit pas sur nos systèmes de test, mais sur un système situé autour du globe :(