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 :

Copie d'un fichier en VB.net


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 : 36

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Par défaut Copie d'un fichier en VB.net
    Bonjour,

    J'espère que vous pourrez m'aider. Voila, je dois copier une base de données d'un répertoire à un autre. Donc j'ai utilisé File.CopyTo, aucun problème. Mais on m'a demandé par la suite de le faire de manière asynchrone. Donc j'ai développé ma propre méthode que voici :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Public Sub copyFile(ByVal copyFilePath As String)
     
            Dim asyncCall As AsyncCallback
            Dim asyncCallWrite As AsyncCallback
     
     
            If File.Exists(copyFilePath) Then
                File.Delete(copyFilePath)
            End If
     
            Try
     
     
                ' Instantiation des flux
                _fileStreamOrignal = New FileStream(Me._completeFilePath, FileMode.Open, FileAccess.Read)
                _fileStreamDestination = New FileStream(copyFilePath, FileMode.Create, FileAccess.Write)
     
     
                Dim buffer(_fileStreamOrignal.Length) As Byte
     
                ' Instantiation des AsyncCallback
                asyncCall = New AsyncCallback(AddressOf ReadOnComplete)
                asyncCallWrite = New AsyncCallback(AddressOf WriteOnComplete)
     
                'Positionner le flux au début de fichier
                _fileStreamOrignal.Seek(0, SeekOrigin.Begin)
     
                'Lecture puis écriture asynchrone
                _fileStreamOrignal.BeginRead(buffer, 0, buffer.Length, asyncCall, 0)
                _fileStreamDestination.BeginWrite(buffer, 0, buffer.Length, asyncCallWrite, 0)
     
            Catch ex As Exception
     
            End Try
     
        End Sub
     
     
        Private Sub ReadOnComplete(ByVal asyncResult As IAsyncResult)
     
            Dim bytesRead As Integer
            bytesRead = _fileStreamOrignal.EndRead(asyncResult)
            _fileStreamOrignal.Close()
     
        End Sub
     
        Private Sub WriteOnComplete(ByVal asyncResult As IAsyncResult)
     
            _fileStreamDestination.EndWrite(asyncResult)
            _fileStreamDestination.Close()
     
        End Sub
    La copie marche, mais impossible d'ouvrir la base de données copiée ! Quand je l'ouvre, j'ai un message qui me dit " Format de base de données non reconnu". L'erreur vient forcément de mon code, car quand j'utilise la fonction CopyTo, j'ai aucun souci ..

    Donc est-ce quelqu'un voit ce qui cloche dans mon code ?

    Merci.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    tu te compliques la vie
    met un copyto dans un backgroundworker ca sera asynchrone et ca fonctionnera
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Par défaut
    Euh ouai .. mais pourrais-tu détailler un peu plus ?

    Ce backgroundworker, je dois l'utiliser directement dans ma Frame, ou alors dans ma classe AsynchroneFile où j'avais développé ma méthode de copie aynschrone ?

    Quand à l'utilisation, je vais chercher un tutoriel

    Merci

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    un backgroundworker sert à déporter du code dans un thread séparé
    après tu mets ce que tu veux dedans, comme un copyto

    le backgroundworker est expliqué dans msdn google ou autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Pourcentage copy d'un fichier de 20GB [VB.Net]
    Par pISQUIK dans le forum VB.NET
    Réponses: 19
    Dernier message: 07/11/2011, 11h54
  2. Réponses: 12
    Dernier message: 07/12/2005, 18h42
  3. copie de base, fichier mdw, perte des droits
    Par hades666evil dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2005, 17h06
  4. Copie d'un fichier sans montage avec Samba
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 5
    Dernier message: 14/07/2005, 11h31
  5. copie d'un fichier vers un autre serveur
    Par jexl dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 16h04

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