Ordre de lecture du foreach...

Signaler
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour à tous...

Je réalise une appli qui scrute les sous-répertoires et fichiers d'un répertoire spécifique...
J'utilise donc ceci pour récup les fichiers...

foreach(string files in Directory.GetFiles(path))
{
...
}

Mais le problème est qu'il me lit les fichiers à l'envers, dans l'ordre décroissant...
Je voudrais bien les traiter de A à Z, et non de Z à A...

Y aurait t'il un moyen plus simple que de foutre le Directory.GetFiles dans un tableau, de le trier et de faire le foreach dessus ????????

Merci d'avance pour vos réponses...

3 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
utiliser un for et remonter le tableau a l'envers :)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
213
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
1 avril 2009

bonjour , j'ai un problème un peu semblable
sauf que moi je n'arrive pas a lire les fichiers trouvés.
aussi je voudrais pouvoir specifier les extensions des fichiers que je veux trouver.
voici mon code qui refuse la lecture du fichier

// Make a reference to a directory.

DirectoryInfo di =
new
DirectoryInfo(
"C:\");

// Get a reference to each file in that directory.

FileInfo[] fiArr = di.GetFiles();

// Display the names of the files.

foreach (
FileInfo fri
in fiArr)

for (
int i = 0; i < fiArr.Length; i++){

using (
StreamReader sr =
File.OpenText(fiArr[i].ToString()))   // il affiche le message d'ereur suivant :Impossible de trouver le fichier 'C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2005\Projects\Windows\Windows\bin\Debug\alarme.txt'.{

while ((Line = sr.ReadLine()) !=
null) ;

Console.WriteLine(Line);}

}

}

pourtant ce fichier existe et son contenu n'est pas vide
aidez moi s'il vous plait
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Salut,

FileInfo.ToString retourne le nom de fichier seul, ce qui fait que tu tentes de faire une ouverture de fichier dans le répertoire courant (beurk) qui dans ton cas et toujours celui d'execution de l'application, d'où l'erreur.
Donc soit tu utilises Path.Combine pour recréer le chemin complet du fichier pour l'ouverture, soit tu utilises la méthode statique Directory.GetFiles qui elle te renvoi directement un tableau de chaines de caractères avec le chemin complet.

String[] files = Directory.GetFiles("C:\");

Dans ton cas ça me semble le mieux vu que tu ne semble rien faire de plus avec tes instances de DirectoryInfo et FileInfo.

PS : et arrête de faire revivre des sujets vieux de 2 ans, crée un nouveau sujet : sur celui ci tu avais relativement peu de chances d'avoir une réponse, mis à part ceux qui ont encore une alerte définie dessus.

/*
coq
MVP Visual C#
CoqBlog
*/