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 :

Y a-t-il plus propre pour accéder à un fichier ?


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Y a-t-il plus propre pour accéder à un fichier ?
    Hello,

    Ce matin dans les logs d'erreur, une IOException sur l'accès à un fichier (je me demande bien par quel process le fichier était déjà ouvert mais c'est un autre débat).

    J'ajoute donc un peu de sécurité à mon code et je suis arrivé à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            While True
                Try
                    sw = New IO.StreamWriter(storageFolder & "\" & Me.DTO.Store.Code & "\" & fileName, True)
                    Exit While
                Catch ex As Exception
                    Threading.Thread.Sleep(1000)
                    Continue While
                End Try
            End While
    Même si je pense que ça fera bien le taff, je me demande s'il n'y a pas plus propre comme manière de faire.

    Laissez aller votre créativité ^^.
    Kropernic

  2. #2
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Salut,

    Déjà faut penser à fermer et disposer un stream (même si le dispose fait le close dans ce cas-ci), sinon tu te retrouve avec un handler sur ton fichier qui ne sera pas libéré.

    Ensuite, à quoi sert ton Thread.Sleep (1000 en plus ça fait beaucoup) ?? Ce n'est certainement pas ici que tu doit décider de combien de temps le thread doit attendre.

    Cordialement.
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par worm83 Voir le message
    Salut,

    Déjà faut penser à fermer et disposer un stream (même si le dispose fait le close dans ce cas-ci), sinon tu te retrouve avec un handler sur ton fichier qui ne sera pas libéré.

    Ensuite, à quoi sert ton Thread.Sleep (1000 en plus ça fait beaucoup) ?? Ce n'est certainement pas ici que tu doit décider de combien de temps le thread doit attendre.

    Cordialement.
    Le 1000, c'est un détail, je pourrais bien sûr mettre moins...

    C'est juste sur la technique du while true avec le try catch dedans que je me pose des questions.

    Quant au close du stream, cela se fait après que le traitement sur le fichier ait été fait. Vu que le code ne concerne que l'accès au fichier, il n'est normal que tu ne le vois pas...
    Kropernic

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Faudrait un peu le contexte de ton bout de code et de ton application.

    Selon moi, si l'écriture dans un fichier fait suite à une action de l'utilisateur (export donnée dans un fichier par exemple). Il est peut être judicieux de mettre une boîte de dialogue Réessayer, Abandon pour contrôler ta boucle et avoir une deuxième condition de sortie. Parce que le fichier est peut être effectivement ouvert ailleurs pour une bonne raison :-)

    S'il s'agit d'une écriture en tâche de fond (un fichier de log par exemple), à priori je poserai un compteur pour sortir de la boucle au bout d'un moment (à voir comment cette nouvelle sortie est gérée).

Discussions similaires

  1. [Bash] et [Perl] - le plus rapide pour parcourir un fichier ?
    Par Bahan_auboulot dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 23/12/2008, 10h46
  2. Problème de droit pour accéder à un fichier backup
    Par mercure07 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/05/2008, 11h02
  3. Problème dans le bootstrap pour accéder aux fichiers
    Par mlokhia dans le forum Zend Framework
    Réponses: 12
    Dernier message: 27/04/2008, 16h55
  4. Réponses: 3
    Dernier message: 11/02/2008, 18h46
  5. convertir chemin pour accéder à un fichier
    Par hoor3in dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2007, 13h38

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