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 :

Problème de création de flux FileStream


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Par défaut Problème de création de flux FileStream
    Bonjour,

    Voici mon problème. Je dois créer un flux FileStream sur un fichier. Je n'ai eu aucun problème jusqu'ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    myFileStream = New FileStream(completeFilePath, FileMode.Open,
                                FileAccess.ReadWrite, FileShare.None, 1, True)
    Ensuite, on m'a demandé la possibilité de créer le fichier au lancement de l'application si il n'existait pas. Donc ici pas de souci non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Not System.IO.File.Exists(completeFilePath) Then
                ' Si il n'existe pas, on le créé
                Try
                    File.CreateText(completeFilePath)
                Catch ex As IO.IOException
                    Throw
                End Try
     
               myFileStream = New FileStream(completeFilePath, FileMode.Open,
                                    FileAccess.ReadWrite, FileShare.None, 1, True)
    Mais voila, maintenant le flux ne veut plus se créer ! J'ai utilisé une MsgBox pour afficher l'erreur et voila ce qui est écrit :
    Le processus ne peut pas accéder au fichier car celui-ci est en cours d'utilisation par un autre processus
    Donc je ne vois pas trop ce que je peux faire, et j'aimerais bien avoir vos avis.


    Merci pour votre aide

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour,

    Il faut penser à fermer le flux de donnée une fois que tu t'en es servit.

    Sinon il restera ouvert entre 2 tests, et la deuxième fois il ne pourra pas y accéder car tu ne l'as pas correctement fermer la première fois.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Public Sub LogErreur(ByVal paramMessage As String)
            'création du répertoire de stockage en fonction de la date du jour
            Dim TraceLogTest As FileStream
            Dim myListener As StreamWriter
            Dim DateErreur As DateTime
     
            Dim current_user As String = Environment.UserName
            Dim repErreur As String = completeFilePath
            Dim fichErreur As String = completeFilePath
            DateErreur = Date.Now
     
            If My.Computer.FileSystem.DirectoryExists(repErreur) Then
                If My.Computer.FileSystem.FileExists(fichErreur) Then
                    TraceLogTest = New System.IO.FileStream(fichErreur, IO.FileMode.Append)
                Else
                    TraceLogTest = New System.IO.FileStream(fichErreur, IO.FileMode.Create)
                End If
            Else
                My.Computer.FileSystem.CreateDirectory(repErreur)
                TraceLogTest = New System.IO.FileStream(fichErreur, IO.FileMode.OpenOrCreate)
            End If
     
            myListener = New StreamWriter(TraceLogTest)
            myListener.WriteLine(vbCrLf & DateErreur.ToString & vbCrLf)
            myListener.WriteLine(paramMessage)
            myListener.WriteLine(vbCrLf & "--------------------------------------------------------------------------")
     
            'écriture dans le fichier texte
            myListener.Flush()
            'fermeture des flux
            myListener.Close()
            TraceLogTest.Close()
        End Sub
    voilà voilà

    ++

  3. #3
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    En principe sous Windows, un même fichier ne peut pas être ouvert par deux applications différentes. Les valeurs de FileShare nous permettent de modifier ce partage de fichier :
    T'as mentionné FileShare.None qui veut dire qu'il refuse tout partage du fichier avec les autres applications, c'est pourquoi t'a reçu ce genre d'erreur.
    Essaye de faire FileShare.Read (Autorise la lecture du fichier par une application tiers.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myFileStream = New FileStream(completeFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read, 1, True)
    Bonne courage

  4. #4
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Par défaut
    Merci pour ces renseignements !
    Je vais pouvoir régler mon problème grâce à vous

    Merci encore !

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

Discussions similaires

  1. [XML] problème pour création flux xml
    Par lelectronique.com dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 21/12/2011, 14h32
  2. Réponses: 7
    Dernier message: 16/06/2004, 15h02
  3. Problème de création de table sous MySql
    Par ducamba dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2003, 09h59
  4. Problème de création de fenêtre
    Par tomateauketchup dans le forum DirectX
    Réponses: 1
    Dernier message: 08/06/2003, 19h42
  5. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07

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