Énumérer les fichiers d'un dossier qui ont le même nom, sauf pour l'extension.

Présentation
À la suite d'une question dans le forum VB.net, je me suis souvenu d'avoir vu une manière de récupérer les noms de fichiers, mais sans les attributs qui viennent également avec les méthodes plus traditionnelles. Et comme la question portait juste sur les noms, je me suis mis au travail. Ayant également construit une interface (très) sommaire, j'ai don décidé de l'ajouter aux sources disponibles sur le site. Cela m'a également permis de pratiquer un peu avec Linq, au travers du reste. J'ai utilisé la classe Directory du Framework, mais, en fouillant dans mon aide, j'ai cru comprendre qu'à partir du Framework 4, cela peut (pourrait) également être réalisé avec la classe DirectoryInfo.
Téléchargement
Compatibilité
Windows
0  0 
Téléchargé 59 fois Voir les 2 commentaires
Détails
Avatar de Clément Marcotte
Expert éminent
Voir tous les téléchargements de l'auteur
Licence : Gratuit pour usage non commercial
Date de mise en ligne : 15 avril 2015




Avatar de mermich mermich - Membre expérimenté https://www.developpez.com
le 15/04/2015 à 21:11
Salut,

Bon, premiere question: le but c'est de monter un appli winforms ou de montrer comment lister les fichier ayant le meme nom d'un dossier ?
Dans le second cas, faire une appli console ou juste poster une classe/methode faisant le taff.

Pour la suite, j'ai parcouru vite fait le code cote vbnet. Je suis desole, mais pour faire simple, c'est tres tres touffu pour ne pas faire grand chose.
  • Il y a des variables inutilisee
  • nom de variables bof bof
  • incoherence de politique de nommage des variables (camel ou pascal ou convention microsoft) , pas les 3
  • variable privee sans raison d'exister
  • accent dans un nom de variable
  • une methode FaireListe qui est trop 'riche', 3 boucles For pour construire tes objets ?



Pour info en C# framework 4, cela prends 3 lignes, et en chainnan une seule...
Code : Sélectionner tout
1
2
3
DirectoryInfo repertoire = new DirectoryInfo(@"C:\workspace\WpfClient\Controls\Pages"); 
var fichierSansExtentions =  repertoire.GetFiles().Select(c => c.Name.Split('.').First()); 
var res = fichierSansExtentions.GroupBy(d => d).Where(grp => grp.Count() > 1);
Bref, de mon point de vue, je jetterai puremenet et simplement ce code.
Avatar de clementmarcotte clementmarcotte - Expert éminent https://www.developpez.com
le 15/04/2015 à 22:04
Citation Envoyé par mermich  Voir le message
Salut,
[*]incoherence de politique de nommage des variables (camel ou pascal ou convention microsoft) , pas les 3

Les hospices de conventions, je m'en sacre comme dans l'an 40. Il n'y a aucune loi formelle qui oblige à les utiliser; sauf des politiques d'entreprises.

[*]accent dans un nom de variable

Cela fait une mèche que le(s) BASIC de Microsoft (incluant VBA) permettent de mettre des accents dans des noms de variable. Cela fait une mèche que je le fais et que je n'ai jamais eu de problème. Si tu veux t'accrocher aux habitudes antiques qui découlent de l'époque des mainframes et des limitations techniques qui empêchaient d'utiliser des accents dans des variables, je ne peux pas t'en empêcher. J'ai même déjà utilisé des BASIC qui limitaient les variables à deux caractères, qui obligeait que le premier caractère soit alphabétique, et les caractères alphabétiques devait obligatoirement être des majuscules. Cela empêchait donc de construire des classes avec des noms de variable commençant avec un caractère de soulignement, ou comme ils disent si bien en France un underscore. Et puis si Windows, ou le Framework ne pouvait pas vivre avec les accents, il n'y aurait pas de System.Globalization dans le Framework.

[*]une methode FaireListe qui est trop 'riche', 3 boucles For pour construire tes objets ?

C'est très possible que tu aies raison, mais je n'ai pas trouvé ou pensé à autre chose. Ceci dit, je préfère faire plus long pour avoir plus de confort en débogant. Il y en a qui préfèrent tout coller et déboguer (sacrer) plus longtemps.

Pour info en C# framework 4, cela prends 3 lignes, et en chainnan une seule...
Code : Sélectionner tout
1
2
3
DirectoryInfo repertoire = new DirectoryInfo(@"C:\workspace\WpfClient\Controls\Pages"); 
var fichierSansExtentions =  repertoire.GetFiles().Select(c => c.Name.Split('.').First()); 
var res = fichierSansExtentions.GroupBy(d => d).Where(grp => grp.Count() > 1);

Cela confirme ce que je dis dans mon introduction et ce dont je n'étais pas certain. Cela peut être fait avec DirectoryInfo et le Framework 4

Pour les variables inutilisées, je pensais avoir faut tout le ménage, mais, il semble que non.

Je pourrai dire que l'on apprend à tout âge.

P.S. En tout cas, il y a matière à bien des débats
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique Windows