Classer Fichiers [Résolu]

Vinsaille 39 Messages postés mercredi 6 juin 2007Date d'inscription 18 juin 2008 Dernière intervention - 18 juin 2008 à 11:39 - Dernière réponse : Vinsaille 39 Messages postés mercredi 6 juin 2007Date d'inscription 18 juin 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 18 juin 2008 à 16:02
3
Merci
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)

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Kevin.Ory
Vinsaille 39 Messages postés mercredi 6 juin 2007Date d'inscription 18 juin 2008 Dernière intervention - 18 juin 2008 à 13:28
0
Merci
Non personne? =X
Commenter la réponse de Vinsaille
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 18 juin 2008 à 15:27
0
Merci
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.
Commenter la réponse de Kevin.Ory
Vinsaille 39 Messages postés mercredi 6 juin 2007Date d'inscription 18 juin 2008 Dernière intervention - 18 juin 2008 à 15:30
0
Merci
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
Commenter la réponse de Vinsaille
Vinsaille 39 Messages postés mercredi 6 juin 2007Date d'inscription 18 juin 2008 Dernière intervention - 18 juin 2008 à 15:41
0
Merci
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
Commenter la réponse de Vinsaille
Vinsaille 39 Messages postés mercredi 6 juin 2007Date d'inscription 18 juin 2008 Dernière intervention - 18 juin 2008 à 16:35
0
Merci
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
Commenter la réponse de Vinsaille

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.