Comment savoir si un fichier est deja ouvert ou pas !

Signaler
Messages postés
778
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
Messages postés
778
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
Bonjour,

Je debute et bosse sous visual studio 2003 avec c#

je voudrais faire une application console qui voudrait savoir si un fichier est deja ouvert ou utilise par une autre application !Et donc renvoye un message en disait que ce fichier est deja ouvert !

avez vous une idée sur comment faire cela !

si je passe par un :

FileStream(pathfile, FileMode.Open, ..)

je vais ouvrir ce fichier donc j'aurais toujours mon message qui dit qu'il est deja ouvert !

je ne vois pas bien comment faire
Si vous avez des idées je vous remercie !
Bonne journée
Christophe

6 réponses

Messages postés
81
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009

Bonjour,

Une méthode (peut être pas la plus élégante mais elle fonctionne)
avec f un string contenant le nom du fichier (+ son path)
try
   {
       System.IO.FileStream fs = System.IO.File.OpenWrite(f);
        fs.Close();
   }
catch(Exception ex)
   {
        Console.WriteLine(ex.Message);
    }

A+
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Petite info utilse (post de coq):
http://www.csharpfr.com/infomsg_STATUS-FICHIER_620062.aspx#3

Mx
MVP C# 
Messages postés
778
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

salut salut,

je viens de tester le code regVb  !
donc j ai tape ce code et compile mon projet qui m'a genere un exe !
cet exe je l'ai mis dans le repertoire ou se trouve le fichier !

j'ouvre le fichier et puis je clique sur l'exe mais rien ne se passe !

try

{

System.IO.FileStream fs = System.IO.File.OpenWrite(f);

fs.Close();

Console.ReadLine();

}

catch(Exception ex){

Console.WriteLine(ex.Message);

Console.ReadLine();

}

le souci je pense vient que ce fichier est situé dans la mmc de windows !!!

c'est un fichier msc

bon si vous avez une idée !
Messages postés
778
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

petite information supplementaire,

je viens meme d'essayer avec openShared.none qui devrait specifier qu'un seul process est attache a ce fichier !

new

FileStream(f, FileMode.Open,FileAccess.Read, FileShare.None

mais toujous la meme chose j'ouvre le programme et j'ouvre l'exe et je n'ai pas d'exception !

il faut absolument que ce programme ne s'execute s'ouvre une seul fois !

Pas facile quand on debute !!!

Merci
Christophe
Messages postés
81
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009

Bonjour,

Avez-vous trouvé ? Le lien fournit par MorpionMX me semble très claire. Pour ma part, cela focntionne chez moi (sous FrameWork 1.1)

A+
Messages postés
778
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

salut salut regvb

oui j'ai parcourru le lien !

et je me suis fait une p'tite application console mais le souci quand j'ouvre le fichier qui est contenu DANS LA MMC de windows et que j'ouvre mon .exe il ne leve pas d'exception !

par contre si j'ouvre mon .exe et que j'ouvre le fichier en question contenue dans la mmc la j'ai une exception !

donc je pense que la personne qui a fait le soft ouvre le fichier dans la mmc sans passer par un fileshare.none !?

qu'en penses tu !?

tu penses qu'il est possible de checker si ce fichier est bien utlise ou pas !?

pour moi ca me parait pas tres evident !

bon je continue mes recherches et mes tests si vous, tu voyez d'autres choses n'hesites pas !

Merci pour tout !
Christophe
Un bouillonnais