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

VB.NET Discussion :

Comparé 2 répertoires


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut Comparé 2 répertoires
    Salut tout le monde,

    Je suis entrain de faire un petit projet pour mon école, Je dois comparé 2 repertoires sélectionnés avec un folderbrowserdialog et d'afficher les noms pareils de fichier et dossiers dans un listview. De plus, pour les noms pareils, je dois afficher la dernière date de modification du fichiers/dossiers. Par exemple, si dans mon dossier toto, j'ai 3 fichiers du nom de toto.txt, toto1.txt ,toto2.txt... et que je possède un autre répertoire avec ces mêmes noms de fichiers, les 3 fichiers vont apparaitre dans mon listview... si j'aurai eu toto234.txt... il aurait eu que 2 fichiers dans mon listview. Bon vous comprenez le principe!

    J'ai commencé le code, à vrai dire je suis pas mal avancé, par contre j'ai un problème avec la comparaison des répertoires! Voici le code en question :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
     
    Private Sub comparerfichier(ByVal dir As String, ByVal dir2 As String)
     
     
    Try
    Dim directoire1 As New DirectoryInfo(dir)
    Dim directoire2 As New DirectoryInfo(dir2)
    Dim fichierinfo1() As FileInfo = directoire1.GetFiles
    Dim fichierinfo2() As FileInfo = directoire2.GetFiles
    ' info que j'ai trouver sur internet, elle vérifie, que le nom du premier fichier est pareil que le nom du deuxieme fichier
    Dim dupNames = From a In fichierinfo1 Join b In fichierinfo2 On a.Name Equals b.Name Select a.Name
     
    ' info sur le listview
    With Me.ListView1
    .View = View.Details
    .GridLines = True
    .FullRowSelect = True
    .CheckBoxes = True 'affiche les cases à cocher
    .Columns.Add("Fichiers", 150, HorizontalAlignment.Left)
    .Columns.Add("Dernière Modification", 120, HorizontalAlignment.Left)
    End With
    ' info sur l'autre listview
    With Me.ListView2
    .View = View.Details
    .GridLines = True
    .FullRowSelect = True
    .CheckBoxes = True 'affiche les cases à cocher
    .Columns.Add("Fichiers", 150, HorizontalAlignment.Left)
    .Columns.Add("Dernière Modification", 120, HorizontalAlignment.Left)
    End With
     
     
     
    'remplis le listview
     
    For Each repertoire As FileInfo In fichierinfo1
    'verifie les 2 repertoire pour voir si il y a des fichiers pareil
    For Each repertoire2 As FileInfo In fichierinfo2
    If repertoire.Name = repertoire2.Name Then
    Dim fichier As New ListViewItem(repertoire.Name)
    Dim fichier2 As New ListViewItem(repertoire2.Name)
    'initialise le fichier1
    With fichier
    .Name = repertoire.Name
    .SubItems.Add(repertoire.LastWriteTime.ToString)
    .Tag = repertoire
    End With
    'initialise le fichier2
    With fichier2
    .Name = repertoire2.Name
    .SubItems.Add(repertoire2.LastWriteTime.ToString)
    .Tag = repertoire2
    End With
    'ajoute les 2 fichiers portant le meme nom
    Me.ListView1.Items.Add(fichier)
    Me.ListView2.Items.Add(fichier2)
     
    End If
     
    Next
    Next
     
     
    ' dossier pareil
     
    ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' COMPARAISON DE DIRECTOIRE NON FONCTIONNEL. MANQUE DE TEMPS POUR VÉRIFIER L'ERREUR 
    ' LA RÉCURSIVITÉ NE SE FAIT PAS CORRECTEMENT
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     
     
    Dim directoiresinfo() As DirectoryInfo = directoire1.GetDirectories
    Dim directoires2info() As DirectoryInfo = directoire2.GetDirectories
    Dim directoireGrosseur1() As String = IO.Directory.GetDirectories(dir)
    Dim directoireGrosseur2() As String = IO.Directory.GetDirectories(dir2)
     
    If directoireGrosseur1.Length <> 0 And directoireGrosseur2.Length <> 0 Then
    For Each info As IO.DirectoryInfo In directoiresinfo
    For Each info2 As IO.DirectoryInfo In directoires2info
    If info.Name = info2.Name Then
    Dim dossier As New ListViewItem(info.Name)
    Dim dossier2 As New ListViewItem(info2.Name)
    With dossier
    .Name = info.Name
    .SubItems.Add(info.LastWriteTime.ToString)
    .Tag = info
    End With
    With dossier2
    .Name = info2.Name
    .SubItems.Add(info2.LastWriteTime.ToString)
    .Tag = info2
    End With
    Me.ListView1.Items.Add(dossier)
    Me.ListView2.Items.Add(dossier2)
    comparerfichier(info.GetDirectories.ToString, info2.GetDirectories.ToString)
    End If
    Next
    Next
    End If
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' ERREUR DANS LA PARTIT DU CODE DU HAUT
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Je vois ai envoyer la fonction au complet pour être sur que vous ne raté rien, par-contre le problème est entre les balises, c'est-à-dire que ma récursivité ne se fait pas correctement! J'ai essayé de le suivre pas par pas, mais j'ai pas vraiment trouvé l'erreur, si jamais quelqu'un peut m'aider, ça serait vraiment gentils!

    Merci beaucoup!

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Pour simplifier le traitement il existe Linq. Après si c'est un cas d'école on attendra sûrement de toi un travail sur l'algo et non sur le code en lui-même.

    Donc si tu veux de l'aide sur ton présent problème, merci de préciser (pas trop le temps de lire tout ton code et de regarder où ça pourrait coincer ).

Discussions similaires

  1. comparer deux répertoires sous linux
    Par bigs3232 dans le forum Linux
    Réponses: 13
    Dernier message: 22/09/2011, 17h39
  2. script shell : comparer 2 répertoires entre eux
    Par Chicna dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 19/09/2011, 18h42
  3. [CLI] Comparer 2 répertoires dans des versions différentes
    Par Empty_body dans le forum CVS
    Réponses: 1
    Dernier message: 24/11/2008, 13h55
  4. Comparer 2 répertoires
    Par Angath dans le forum Windows Forms
    Réponses: 9
    Dernier message: 27/09/2007, 12h23
  5. Comparer des répertoires
    Par dodineau dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 30/08/2006, 09h42

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