Classer Fichiers

Résolu
Vinsaille Messages postés 39 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 18 juin 2008 - 18 juin 2008 à 11:39
Vinsaille Messages postés 39 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 18 juin 2008 - 18 juin 2008 à 16:35
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

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
18 juin 2008 à 16:02
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)
3
Vinsaille Messages postés 39 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 18 juin 2008
18 juin 2008 à 13:28
Non personne? =X
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
18 juin 2008 à 15:27
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.
0
Vinsaille Messages postés 39 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 18 juin 2008
18 juin 2008 à 15:30
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vinsaille Messages postés 39 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 18 juin 2008
18 juin 2008 à 15:41
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
0
Vinsaille Messages postés 39 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 18 juin 2008
18 juin 2008 à 16:35
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
0
Rejoignez-nous