Comment savoir si un fichier est ouvert ou fermé

Résolu
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 - 2 avril 2010 à 15:02
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 - 4 avril 2010 à 12:38
Bonjour ,
Je n'ai pas trouvé un code qui ne permet de
savoir si un fichier est ouvert.
J'ai trouvé un code pour VB6 qui utilise les
fonction lopen er lclose mais je n'ai pas
arrivé à l'adapter sur VBnet2003.

Pouvez m'aider à trouver ce code ?
Merci


Dedenet2

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 avril 2010 à 15:35
Salut
Ne sachant pas répondre à ta question (*), j'ai ouvert mon moteur de recherche préféré (Bing) et j'y ait tapé
VB "file is open"
Et bah le premier résultat est un exemple de test si un fichier est ouvert.
Ca tombe bien, non ?
Curieux, je l'ai ouvert et j'ai lancé le projet proposé :
Il te suffit de faire ceci et d'intercepter l'erreur qui surviendra si le fichier est innaccessible :
    Dim sFichier As String = "C:\toto.txt"
    Try
        Dim FS As IO.FileStream = IO.File.Open(sFichier, IO.FileMode.Open, _
                                               IO.FileAccess.Read, IO.FileShare.None)
        ' Ouverture Ok, donc non déjà ouvert : referme
        FS.Close()
        FS.Dispose()
        FS = Nothing
        MsgBox("Fichier non ouvert")
    Catch ex As IO.IOException
        MsgBox("""" & sFichier & """ déjà ouvert" & Environment.NewLine & ex.Message)
    Catch ex As Exception
        MessageBox.Show("Erreur inconnue" & Environment.NewLine & ex.Message)
    End Try

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
2 avril 2010 à 16:06
Bonjour

Je réponds en posant une nouvelle question? excusez-moi mais le sujet peut m'intéresser

Si le fichier est ouvert par un autre utilisateur que peut on y faire? demander si l'utilisateur veut le fermer? mais lorsqu'on est dans une application que peut-on faire : rien?

Hors application : encore Faut t'il être administrateur du serveur où le fichier est resté ouvert pour utiliser l'option -u de l'outil handle de Microsoft

http://www.microsoft.com/france/technet/sysinternals/SystemInformation/Handle.mspx
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 avril 2010 à 16:26
Ca, je ne sais pas.
Il faudrait poser la question à des admins réseau qui gèrent des parcs informatiques.
A mon avis, fermer autoritairement est une mauvaise idée.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 avril 2010 à 16:57
CreateFile() et CloseHandle() évitent la gestion d'exception et le chargement du moteur de script.
FS finissant lui meme par appeler l'API, autant le faire directement.

ciao...
BruNews, MVP VC++
0

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

Posez votre question
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
4 avril 2010 à 12:38
Bonjour ,
Merci pour ce code.
J'ai testé ce code sur Vbnet2003 mais j'étais
obligé de supprimer "FS.Dispose()".
Cela semble focntionner sauf quand on réouvre un
fichier txt sur NotePad.
Moi , je veux vérifier si des fichiers dwg sont
ouverts ou pas.
Cependant ,je suis étonné de cette méthode qui
consiste à réouvrir un fichier pour voir si il
est ouvert !
N'existe t'il pas une autre méthode plus simple ?
Par une fonction ou par les API ?

Merci
0
Rejoignez-nous