Slt tout le monde
Mon problème est le suivant:
J’ai un dossier qui contient des fichiers texte. Et je veux récupérer tous les Stream de ces fichiers dans un Stream [].
Slt tout le monde
Mon problème est le suivant:
J’ai un dossier qui contient des fichiers texte. Et je veux récupérer tous les Stream de ces fichiers dans un Stream [].
Salut,
J'ai bien peur qu'il n'existe pas de "méthode toute faite". C'est à toi de créer un tableau de la taille du nombre de fichier et d'ouvrir chacun des fichiers séparément.
Avec linq bien sûr!! (ça devient un réflexe!!)
Un truc du genre:
Bon, ensuite je sais pa si c'est une bonne idée de tout ouvrir comme ça...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var list_files = Directory.GetFiles(@"C:\tmp\", "*.txt", SearchOption.TopDirectoryOnly); StreamReader[] result = list_files.Select(one_file => new StreamReader(one_file)).ToArray() ;
Je pense que c'est une mauvaise idée. Si une exception est levée au milieu du Select (un fichier verrouillé par exemple), les streams précédemment ouverts ne seront plus accessibles et ne pourront donc pas être fermés.
Peut-être plus quelque chose du genre :
Moche mais plus safe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 var streams = new List<StreamReader>(); try { foreach (var file in Directory.GetFiles(@"C:\tmp\", "*.txt", SearchOption.TopDirectoryOnly)) { streams.Add(new StreamReader(file)); } }finally { foreach (var stream in streams) { stream.Close(); } }
Mais le mieux serait encore, dans la mesure du possible, de traiter les streams un par un.
Partager