Parcourir un dossier pour trouver un fichier dont on ne sait pas lenom exact [Résolu]

cs_momo187 15 Messages postés lundi 25 août 2008Date d'inscription 17 novembre 2010 Dernière intervention - 17 nov. 2010 à 10:35 - Dernière réponse : cs_momo187 15 Messages postés lundi 25 août 2008Date d'inscription 17 novembre 2010 Dernière intervention
- 17 nov. 2010 à 11:48
Bonjour,

Cela fait un moment que je me mélange les pinceaux alors je sollicite votre aide.
Je dois écrire la date du jour dans un fichier texte. Jusque là rien de bien méchant.
Simplement le nom du fichier est aléatoire, je sais uniquement qu'il commence par "log_".
Savez-vous comment dois-je m'y prendre pour parcourir le dossier et ouvrir le fichier qui commence par "log_"?
Peu importe ce qu'il y a ensuite, ce sera le seul fichier du répertoire commençant par "log_". J'ai regardé au niveau de substring mais je ne trouve vraiment rien.

merci d'avance pour votre aide.
Afficher la suite 

6 réponses

Répondre au sujet
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 17 nov. 2010 à 11:20
+3
Utile
Tu incluerais ceci dans un foreach par exemple?

Pas forcément ! Pour traiter tous les fichiers "log_...", il faudrait, mais dans ton cas ....

Si tu es certain que ton dossier ne pourra jamais contenir qu'un seul fichier log_..., Le tableau retourné par GetFiles ne contiendra donc jamais plus d'un seul élément, qui sera donc toujours l'élément d'index 0.

Il faut quand même que tu teste si le tableau retourné contient au moins un élément. S'il en contient 1 et que tu es sur de ton coup, tu peux directement adressé l'élément 0, au lieu de parcourir l'ensemble du tableau avec un For Each.

Ceci dit, un For Each parcourra l'ensemble du tableau qui ne devrais contenir qu'un seul élément, il l'adressera donc que l'élément 0. Cela revient au même !!!!
La seule différence, c'est, si jamais un jour tu as plusieurs fichiers :
- D'adresser directement l'élément 0 ne traitera qu'un seul fichier "log_..." sans être certains que ce soit le bon, il traitera le premier trouvé
- D'utiliser un For Each traitera l'ensemble des fichiers trouvé. Le bon sera traité mais les autres aussi.



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
Shaolyne 155 Messages postés jeudi 12 mai 2005Date d'inscription 8 mars 2011 Dernière intervention - 17 nov. 2010 à 11:31
+3
Utile
Je viens de lancer le code sous VS, effectivement j'avais manqué que sFilenName contient le chemin complet du fichier.

Voici donc le code correct:
foreach (string sFileName in System.IO.Directory.GetFiles())
{
   FileInfo fi = new FileInfo(sFileName);
   if (fi.Name.StartsWith("Log_", StringComparison.InvariantCultureIgnoreCase))
      //Ouvrir le fichier et écrire (utiliser fi)
}


Concernant l'utilisation du paramètre "Search Pattern" - log_*.* - l'approche est plus pertinente et adaptée à ton besoin.
Tu peux l'utiliser comme ceci:
String[] fichiers = System.IO.Directory.GetFiles(, "log_*.*")
if(fichiers.Length == 1)
{
   FileInfo fi = new FileInfo(fichiers[0]);
   ///etc...
}


Shao.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Shaolyne
Shaolyne 155 Messages postés jeudi 12 mai 2005Date d'inscription 8 mars 2011 Dernière intervention - 17 nov. 2010 à 10:58
0
Utile
Tu peux utiliser
filename.StartsWith("log_", StringComparison.InvariantCultureIgnoreCase)


Pour récupérer une référence vers un dossier et itérer à travers la liste de ses fichiers, tu peux faire ceci:
foreach (string sFileName in System.IO.Directory.GetFiles(<Chemin vers ton répertoire>))
{
   if(filename.StartsWith("log_", StringComparison.InvariantCultureIgnoreCase))
     //Ouvrir le fichier et écrire
}


Shao.
Commenter la réponse de Shaolyne
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 17 nov. 2010 à 11:04
0
Utile
System.IO.Directory.GetFiles(TonDossier, "log_*.*")
te renverra un tableau de string contenant tous les fichiers du dossier en question commençants pas log_


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
cs_momo187 15 Messages postés lundi 25 août 2008Date d'inscription 17 novembre 2010 Dernière intervention - 17 nov. 2010 à 11:10
0
Utile
@ Shaolyne :
J'ai bien aimé ton foreach, mais lorsque je l'exécute en pas à pas et que j'arrive sur mon fichier en question, il ne rentre par dans le test, comme si il n'était pas d'accord avec "log_" comme s'il ne le trouve pas.
Il faut savoir que mon fichier commence par "log_" mais entièrement il peut se nommer "log_10112010.txt"
Tu vois?

@ casy :

Tu incluerais ceci dans un foreach par exemple?

Merci pour votre aide en tout cas.
Commenter la réponse de cs_momo187
cs_momo187 15 Messages postés lundi 25 août 2008Date d'inscription 17 novembre 2010 Dernière intervention - 17 nov. 2010 à 11:48
0
Utile
Super.
Merci beaucoup à vous 2 en tout cas.
bon appétit.
Commenter la réponse de cs_momo187

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.