Ordre de lecture du foreach...

nerix27 Messages postés 86 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 21 juin 2007 - 15 déc. 2004 à 15:52
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 22 déc. 2006 à 11:17
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 déc. 2004 à 16:25
utiliser un for et remonter le tableau a l'envers :)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
beny100 Messages postés 213 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 1 avril 2009
22 déc. 2006 à 10:13
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
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 déc. 2006 à 11:17
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
*/
0
Rejoignez-nous