Lire ligne par ligne un fichier utilisé par un autre processus

Résolu
Utilisateur anonyme - 13 déc. 2014 à 12:56
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 13 déc. 2014 à 23:00
Bonjour, j'utilise en ce moment le code suivant pour lire un fichier ligne par ligne :

For Each Fichier As String In Directory.GetFiles("C:\Windows\DossierLogs")
      For Each line As String In File.ReadAllLines(Fichier)

      Next
Next


J'ai trouvé ce code sur internet pour lire un fichier (mais entièrement) utilisé par un autre processus, et le mettre dans une TextBox :

TextBox1.Clear
Dim CheminDuFichier As String = "C:\Windows\DossierLogs\text.log"
Dim sr As FileStream = New FileStream(CheminDuFichier, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
sr = File.Open(CheminDuFichier, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
Dim b(1024) As Byte
Dim temp As UTF8Encoding = New UTF8Encoding(True)
Dim text As String = ""

Do While sr.Read(b, 0, b.Length) > 0
      text += temp.GetString(b)
Loop

sr.Close()
TextBox1.Text = text


J'aimerais avoir un code qui a la même fonction que celui-ci (c'est-à-dire de lire un fichier utilisé par un autre processus) mais qui, au lieu de renvoyer tout le texte du fichier, le renvoyer ligne par ligne...

Merci d'avance !

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
13 déc. 2014 à 14:52
Bonjour,
Dès lors que tu sais lire dans une variable tout le contenu d'un fichier texte, rien ne t'empêche d'aclater cette variable (fonction split) et d'en lire les lignes une par une. Fonction split à lire dans MSDN, donc.
0
Utilisateur anonyme
13 déc. 2014 à 19:29
Ok et comment dois-je faire pour Split ligne par ligne ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
Modifié par ucfoutu le 13/12/2014 à 19:51
Tu ouvres MSDN à la rubrique split.
Tu découvres que cette fonction te permet d' "éclater", par rapport à un séparateur (dans ton cas un retour à la ligne), toute chaîne de caractères (et donc ta chaîne lue "d'un seul coup", qui est le contenu de ton fichier texte).
Le résultat de cet "éclatement est un tableau (Array) dont chaque élément est une sous-chaîne (jusqu'au prochain retour charriot).
Tu lis les éléments de cet array un par un, dans une boucle For ... to ... next
En te rappelant que le premier élément d'un array est d'indice 0 et que le dernier est d'indice TestArray.Length - 1 où testarray est le nom que tu donnes à l'array obtenu par le Split.
Pas plus difficile que celà (si tu veux bien t'y mettre un peu).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Utilisateur anonyme
13 déc. 2014 à 20:11
Merci mais je savais cela. Ce que je te demande, c'est quel séparateur dois-je mettre pour Split le texte à chaque ligne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
Modifié par ucfoutu le 13/12/2014 à 20:45
http://www.dotnetperls.com/newline-vbnetJe ne serais par ailleurs pas surpris (bien que ne pratiquant pas VB.Net) que File.ReadAllLines ne te retourne pas déjà, tout seul comme un grand) un array dont les éléments sont chacune de tes lignes ...

PS : je ne croyais pas si bien dire ! Je viens de regarder MSDN sur la toile (puisque je ne suis pas VB.Nettiste)
C'est bien un array déjà tout fait, qui t'est retourné par File.ReadAllLines
http://msdn.microsoft.com/en-us/library/system.io.file.readalllines%28v=vs.110%29.aspx
!!!
Question : quelle est donc la différence entre nous deux ?
Réponse : je consulte MSDN et toi non.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
13 déc. 2014 à 23:00
Bonjour

Je ne comprends pas ce que tu demandes
For Each Fichier As String In Directory.GetFiles("C:\Windows\DossierLogs")
For Each line As String In File.ReadAllLines(Fichier)

Next
Next


et que veux tu faire avec line ?
0
Rejoignez-nous