Comment savoir si un fichier est ouvert ou fermé [Résolu]

dedenet2 372 Messages postés vendredi 27 juillet 2007Date d'inscription 22 juillet 2013 Dernière intervention - 2 avril 2010 à 15:02 - Dernière réponse : dedenet2 372 Messages postés vendredi 27 juillet 2007Date d'inscription 22 juillet 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 2 avril 2010 à 15:35
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 2 avril 2010 à 16:06
0
Merci
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
Commenter la réponse de cs_loulou69
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 2 avril 2010 à 16:26
0
Merci
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.
Commenter la réponse de cs_Jack
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 2 avril 2010 à 16:57
0
Merci
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++
Commenter la réponse de BruNews
dedenet2 372 Messages postés vendredi 27 juillet 2007Date d'inscription 22 juillet 2013 Dernière intervention - 4 avril 2010 à 12:38
0
Merci
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
Commenter la réponse de dedenet2

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.