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 :

Comparaison de nom de fichier C#


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    BAC +2
    Inscrit en
    octobre 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +2

    Informations forums :
    Inscription : octobre 2018
    Messages : 89
    Points : 58
    Points
    58
    Par défaut Comparaison de nom de fichier C#
    Bonjour tout le monde,

    Voici mon problème , j'aimerai crée une méthode qui compare tout les noms des fichiers présent dans un certain Folder, et que si par exemple deux fichiers ( Avec des extensions différentes) ont le même nom alors je peux travailler dessus.(Ex: Je zip un txt et pdf du même nom).

    J'ai pas trop d'idée de par où commencer surtout sur la comparaison.

    Je comptais utiliser des buffers mais je ne sais pas si c'est optimisé..


    Merci bcp d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    4 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 046
    Points : 9 457
    Points
    9 457
    Par défaut
    Bonjour,
    Une idée en passant: charger la liste des noms de fichier dans une liste de chaines, et utiliser une requête LINQ pour trouver les "doublons".
    Il ne te reste plus alors qu'à parcourir le résultat et traiter les fichiers.

    Tatayo.

  3. #3
    Membre du Club
    Homme Profil pro
    BAC +2
    Inscrit en
    octobre 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +2

    Informations forums :
    Inscription : octobre 2018
    Messages : 89
    Points : 58
    Points
    58
    Par défaut
    merci pour l'idée , mais admettons je fasse ma boucle qui cherche dans ma list de fichiers , dès qu'elle trouve le doublons comment je lui dit "Retourne moi les deux fichiers doublons".

    En clair si je veux les traiter il faut quelle me renvoie du style : "c://GROUP/test.txt"+"c://GROUP/test.pdf"


    Ha je viens de comprendre pardon , c'est la LINQ qui me retourne à chaque fois ma value donc ?

  4. #4
    Expert éminent
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    4 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 046
    Points : 9 457
    Points
    9 457
    Par défaut
    C'est ça.
    On peut par exemple imaginer une liste d'objets, avec deux membres: le nom complet du fichier, et le nom "à comparer" (ou un accesseur qui le renvoie).
    La requête LINQ va donc juste renvoyer la liste des objets qui ont "un doublon" sur cette deuxième valeur.
    On peut alors parcourir le résultat de la requête avec un simple FOREACH,et pour chaque objet on a de fait le nom complet du fichier.

    Tatayo.

  5. #5
    Membre du Club
    Homme Profil pro
    BAC +2
    Inscrit en
    octobre 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +2

    Informations forums :
    Inscription : octobre 2018
    Messages : 89
    Points : 58
    Points
    58
    Par défaut
    En gros dans l'état actuel des choses avant cette comparaison je dois faire d'autre traitement sur le dossier donc au moment où je dois comparé j'ai deux listes . Une listes contenant tout les NameWithExtension de chaque fichier et une autre list idem pour les pdf . Est-ce que la à ce moment là ca nous aide pour la requête LINQ ou est-ce que je dois comparé avant de splité les fichiers dans les listes?

  6. #6
    Membre du Club
    Homme Profil pro
    BAC +2
    Inscrit en
    octobre 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +2

    Informations forums :
    Inscription : octobre 2018
    Messages : 89
    Points : 58
    Points
    58
    Par défaut
    Pour l'instant j'ai trouvé ça comme alternative ( code ci dessous ) , je me fais afficher les pdf qui ont le même nom que des .txt présent dans la première liste.

    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
    18
    19
    20
    21
    22
    23
     
    public void compare(List<string> listTxt, List<string> listPdf)
            {
     
                string pdf_doubl="";
     
                foreach (var pdf_File in listPdf)
                {
                    try
                    {
                        if (listTxt.Contains(pdf_File))
                        {
                            pdf_doubl = pdf_File;
                            Console.WriteLine(pdf_doubl);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        throw;
                    }
                }
            }

  7. #7
    Membre expérimenté
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 749
    Points : 1 596
    Points
    1 596
    Par défaut
    Un petit exemple de ce que l'on peut faire avec Linq :

    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
    var dictionary = Directory
    	.EnumerateFiles("C:\\Group") // liste (chemin + nom) des fichiers du répertoire C:\Group
    	.Select(Path.GetFileName) // ne garder que le nom du fichier
    	.GroupBy(f => Path.GetFileNameWithoutExtension(f.ToLower())) // regrouper par le nom en minuscule sans extension
    	.Where(g => g.Count() > 1) // ne garder que les groupes contenant plus d'un élément (c.à.d les doublons)
    	.ToDictionary(g => g.Key, g => g.ToArray()); // extraire un dictionnaire avec en clé le nom de fichier en minuscule sans extension, en valeurs des tableaux de noms de fichier
     
    foreach(var kvp in dictionary)
    {
    	Console.WriteLine($"Key : {kvp.Key}");
    	foreach(var file in kvp.Value)
    	{
    		Console.WriteLine(file);
    	}
    }
    En espérant que ça te guide dans tes recherches ; n'hésite pas à poser des questions pour mieux comprendre ce que fait chaque élément.

  8. #8
    Membre du Club
    Homme Profil pro
    BAC +2
    Inscrit en
    octobre 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +2

    Informations forums :
    Inscription : octobre 2018
    Messages : 89
    Points : 58
    Points
    58
    Par défaut
    Salut Noxen merci pour l'exemple écoute ca marche nikel , je comprend globalement tout ce que tu m'a montré.

    Ca m'offre une opportunité d'optimisation de ma méthode , c'est vrai que LINQ offre de grande possibilités.

    Topic RESOLU merci à tous

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

Discussions similaires

  1. Boucle avec comme condition une comparaison de nom de fichiers
    Par yonafunu dans le forum Général Python
    Réponses: 4
    Dernier message: 18/07/2017, 14h24
  2. [Python 3.X] Comparaison de noms de fichiers avec recherche aussi approximative
    Par Rdjinn dans le forum Général Python
    Réponses: 2
    Dernier message: 10/06/2016, 17h52
  3. Comparaison nom de fichier
    Par TrafalgarD dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 01/04/2016, 18h16
  4. Comparaison et tri en fonction du nom du fichier
    Par halloumiali dans le forum C
    Réponses: 9
    Dernier message: 20/03/2012, 19h16
  5. Problème de comparaison de noms de fichiers
    Par ProviewJava1 dans le forum C
    Réponses: 4
    Dernier message: 19/01/2007, 15h31

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