IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.Net] Comment tester si un fichier est en cours d'utilisation ?


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [VB.Net] Comment tester si un fichier est en cours d'utilisation ?
    Bonjour,
    Je cherche à tester si un fichier est utilisé dans mon code en VB.net :

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Bonjour,

    Il faut chercher à l'ouvrir en mode exclusif. Si il est en cours d'utilisation, il y aura une exception??

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Justement je ne veux pas d'exception
    Je veux savoir si le fichier est déjà ouvert avant de l'ouvrir.

  4. #4
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par f_abibi
    Justement je ne veux pas d'exception
    Je veux savoir si le fichier est déjà ouvert avant de l'ouvrir.
    tu fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Function IsFileOpen(ByVal strFic As String) As Boolean
        Dim fic As Integer
        On Error Resume Next
     
        fic = FreeFile()
        Open strFic For Input Access Read Lock Read Write As fic
     
        If Err.Number = 0 Then
            IsFileOpen = False
            Close fic
        Else
            IsFileOpen = True
        End If
    End Function
    le "resume next" ignore l'exception.
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Cette ligne me pose problème :
    Open strFic For Input Access Read Lock Read Write As fic

  6. #6
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par f_abibi
    Cette ligne me pose problème :
    Open strFic For Input Access Read Lock Read Write As fic
    C'est quoi le msg d'erreure?
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Elle n'est pas reconnu dans l'éditeur Visual Basic 2005

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par f_abibi
    Justement je ne veux pas d'exception
    Je veux savoir si le fichier est déjà ouvert avant de l'ouvrir.
    Ben justement c'est l'exception qui te permettra de savoir si le fichier est en cours d'utilisation, ceci en utilisant un bloc Try/Catch
    A ma connaissance, il n'y a pas d'autres moyens de gérer celà.

    Donc pour ton cas de figure, il suffit de te créer une méthode type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Imports System
    Imports System.IO
    '...
     
     
    Public Shared Function IsOpen(ByVal Filepath As String) As Boolean
       Dim result As Boolean = False
       
       Try
          'tenter l'ouverture du fichier en mode exclusif
          'fermer le fichier
       Catch ex As IOException
          result = True
       End Try
       Return result
    End Function
    Bien sûr ici je n'ai pas traité toutes les autres exceptions possibles comme le fichier inexistant etc...
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Le message c'est "Open n'est pas déclaré. La fonction d'E/S de fichier est disponible dans l'espace de noms 'Microsoft Visual Basic' "

  10. #10
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par karami
    tu fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Function IsFileOpen(ByVal strFic As String) As Boolean
        Dim fic As Integer
        On Error Resume Next
     
        fic = FreeFile()
        Open strFic For Input Access Read Lock Read Write As fic
     
        If Err.Number = 0 Then
            IsFileOpen = False
            Close fic
        Else
            IsFileOpen = True
        End If
    End Function
    le "resume next" ignore l'exception.
    heu karami, il est temps de te mettre au VB.Net
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour l'aide.

  12. #12
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par neguib
    heu karami, il est temps de te mettre au VB.Net
    Je préfère le C#
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  13. #13
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par karami
    Je préfère le C#
    ok mais comme tu le vois mon exemple de code est facilement compréhensible pour traduire en C#, éviter au max d'utiliser inutilement la librairie spécifique Microsoft.VisualBasic
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  14. #14
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Entendu
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  15. #15
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Re,

    je suis un peu perdu là Tu as pris quoi comme code f_alibi alors?

    Car le code de Karimi lui aussi génère une exception, sauf qu'il nécrit pas le try catch. En plus c'est beaucoup plus couteux en performance la gestion des erreurs façon VB6 (on error ...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] comment tester si un fichier est déjà ouvert?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 25/01/2016, 10h34
  2. [SQL] Tester si un fichier est en cours d'utilisation
    Par obordelow dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/04/2007, 14h07
  3. Réponses: 8
    Dernier message: 24/10/2006, 10h36
  4. Réponses: 1
    Dernier message: 31/03/2006, 11h24
  5. [XML]Comment tester que mon fichier XML est comme ceci?
    Par Devil666 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/06/2005, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo