Classer Fichiers [Résolu]

Signaler
Messages postés
39
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
18 juin 2008
-
Messages postés
39
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
18 juin 2008
-
Bonjour,

Voilà je cherche à trier les fichiers dans un répertoire, leur extension est .csv, j'aimerai les classer par ordre chronologique.

J'ai trouvé ce code sur le net:

Imports Microsoft.VisualBasic
'Récupère une liste de fichiers
Dim MyFiles As String() = System.IO.Directory.GetFiles("C:\UnRepertoire", "*")
'Liste trièe contenant les noms des fichiers
dim mLst as new System.Collections.SortedList
'Si fichiers trouvés
If MyFiles IsNot Nothing Then
   'Tri les fichiers par date du plus ancien au plus récent
   Dim i as Integer
   For i  = 0 To MyFiles.Length - 1
      Dim CurrentDate As Date = New IO.FileInfo(MyFiles(i)).LastWriteTime
      mLst.Add(Format(CurrentDate,"yyyy.MM.dd.hh.mm.ss"),MyFiles(i))
   Next
End if
'Pour récupérer les fichier le plus ancien, prendre le premier élément. Pour le plus récent, le dernier.

Donc j'ai adapter les variables pour mon appli, cependant il dit que pour selectionner le fichier le plus récent, il faut séléctionner le dernier ... moi j'ai mis :
Dim fichier As String = MyFiles(MyFiles.Length - 1
).ToString

Comme ça j'ai le chemin du fichier (c:\....)

Mais ça ne marche pas vrmt, ça selectionne un peu au pif :(
Ca vient du code qui serait bidon, on c'est moi qui pige pas le truc...?

Merci

6 réponses

Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Une SortedList n'est accessible que par clé, et non par index. Donc mLst.Item(MyFiles.Length - 1) ne fonctionne pas.

Essaie ça:

    ' Lister les fichiers du dossier
    Dim myFiles As String() = System.IO.Directory.GetFiles("C:", "*")
    ' Trouver les dates de dernières modifications des fichiers
    Dim myDates(myFiles.Length - 1) As Date
    For i As Integer = 0 To myFiles.Length - 1
        myDates(i) = New IO.FileInfo(myFiles(i)).LastWriteTime
    Next
    ' Classer la liste des fichiers en fonction des dates
    Array.Sort(myDates, myFiles)
    ' myFiles est maintement classé par date :
    Dim PlusRecent As String = myFiles(myFiles.Length - 1)
Messages postés
39
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
18 juin 2008

Non personne? =X
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Salut,
C'est dans ta liste mLst que les fichiers sont classé, pas dans MyFiles. Il faut donc récupérer le dernier élément de mLst pour avoir le fichier le plus récent.
Messages postés
39
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
18 juin 2008

Tin le truc trop bidon ... enfin sur ce coup là c'est quand même moi le plus bidon... Je teste si ça marche je te tiens au courant
Messages postés
39
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
18 juin 2008

Mouai bah je suis tjs aussi bidon...

J'ai fais :

 Dim fichier As String = mLst.Item(MyFiles.Length - 1).ToString

Il a pas aimé il me dit :
Impossible de comparer deux éléments dans le tableau.

J'ai pas compris =X
Messages postés
39
Date d'inscription
mercredi 6 juin 2007
Statut
Membre
Dernière intervention
18 juin 2008

Et bien écoute ça à l'air de marcher ce que tu as fait !
Je t'avoue que je n'ai pas tout compris, je vais revoir tout car j'aime pas faire les choses sans comprendre .

Merci bcp en tout cas.

RÉPONSE ACCEPTÉE :D