Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007
-
19 avril 2007 à 20:06
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007
-
7 mai 2007 à 14:26
Bonjour,
Lorque j'essaie d'oucrir un stream pour lire un fichier déjá ouvert par un autre programme
une erreur se produit!
Dim sr As IO.StreamReader = New IO.StreamReader(NomFichier) '-> erreur
avec cette instruction c'est pareil
Dim s2 As New FileStream(NomFichier, FileMode.Open, FileAccess.Read, FileShare.Read)
Pourtant, si je clique deux fois sur le fichier avec l'explorateur windows j'arrive a lire ce qui y est ecrit!
Est-ce que qq peut m'aider SVP?
J'ai déjá chercher partout mais sans reponse
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 20 avril 2007 à 00:05
Salut
Je fait exactement comme PurBonheur et pas de probleme ?
quand tu mets un message dans un forum pour dire que tu as un erreur c'est bien beau, mais le plus parlant c'est l'erreur elle meme :)
Sinon une autre piste pourrais peut etre te metre sur la voir en utilisant un Try non ?
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 20 avril 2007 à 14:11
Merci pour votre attention.
l'erreur indiqué est que le fichier est déjá ouvert par un autre programme.
En anglais ça donne
"The process cannot access the file because it is being used by another process "
A cause du mode d'ouverture en exclusivité je crois.
Or, j'arrive a ouvrir et a lire un tel fichier a partir de l'explorateur de windows.
Je voudrais donc connaitre
le moyen de lire un fichier ouvert en mode exclusif
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 26 avril 2007 à 18:11
Private Sub Test()
Try
Dim Fdg As New OpenFileDialog
If Fdg.ShowDialog = DialogResult.OK Then
Dim Fic As String
Fic = Fdg.FileName
'Erreur ici
Dim sr As IO.StreamReader = New IO.StreamReader(Fic)
' Ou...
'Erreur ici
Dim s2 As New IO.FileStream(Fic, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
End If
Fdg.Dispose()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
essaie d'ouvrir un fichier mdb avec Access, puis de l'ouvrir en mode binaire
ou encore de lire le fichier correspendant ldb puis de l'ouvrir en mode texte
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 29 avril 2007 à 10:32
donc ce que tu recherche a faire c'est d'ouvrir un fichier Access en un mode d'exclusion acces (IO.FileAccess.Read)! je crois que c'est assez particulier a faire mais j'en suis pas sur !
Normalement pour ouvrir une base Access il faut avoir un client de connexion un peux comme SQL en bref il te faut un connecteur !
Je pense (mais je peu me trompé) que pour ouvrir une base mdb faudrai la lire en Bytes avant de la lire en binaire non ?
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007 2 mai 2007 à 13:54
Non je ne veux pas me connecter a une base de donnée.
Je voudrais simplement la lire en byte (ou binaire) pour pouvoir la copier (avec une fonction spéciale qui montre un progressbar etc...).
Pour l'autre exemple que j'ai cité (fichier .ldb qui aparait quand une base de donnée access a été ouverte), je voudrais le lire en mode texte pour pouvoir savoir qui y est connecté.
Mais de maniere general je ne trouve pas le moyen de lire un fichier ouvert en mode exclusif.
Je pourrais conclure que puisque le fichier est ouvert en mode exclusif, c'est impossible.
Cependant, a partir de l'explorateur de windows, je peux copier ce fichier ou le lire en faisant un doubleclick.
jnbrunet
Messages postés258Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention13 novembre 2012 5 mai 2007 à 23:06
En général, system.IO te sort cette erreur lorsque tu fermes le fichier alors qu'il est utilisé par un autre programme. En tout cas, c'était mon problème.
jnbrunet
Messages postés258Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention13 novembre 2012 6 mai 2007 à 15:44
Oui, je fais le SR.closes() et le FS.close() - streamReader et FileStream - à la fermeture de mon formulaire, et je place ces deux commandes dans un try catch. Si l'opération echoue, et bien j'envoi un message à l'utilisateur comme quoi je ne peux fermer son fichier