2013-02-23 3 views
1

Mon application de transfert de fichiers fonctionne maintenant et transfère les fichiers comme il se doit. Mais j'ai rencontré un autre problème que je crois que quelqu'un ici dans stackoverflow peut faire la lumière.UnauthorizedAccessException lors du transfert de fichiers

Le problème ne se produit pas lorsque je transfère un fichier pour la première fois, sans doublon sur l'emplacement cible ou lorsque je transfère le même fichier à nouveau pour remplacer le fichier dupliqué existant pendant que le programme est en cours d'exécution. Mais lorsque je ferme le programme, puis le rouvrir pour transférer à nouveau le même fichier, avec un doublon existant du fichier sur l'emplacement cible qui a été transféré auparavant, le problème se produit.

Je reçois l'erreur UnauthorizedAccessException: Access to the path denied

je ne vois pas cela comme un problème de privilège utilisateur parce que je suis en cours d'exécution du logiciel dans un compte Administrateur. Mais bien sûr, je ne suis pas sûr à 100% de ça. Corrigez-moi si je me trompe à propos de mon hypothèse.

Vous avez des suggestions à propos de cela? Je crois, je peux travailler à travers cela en utilisant File.Exist combiné avec certains codes, mais je parie qu'il existe une meilleure façon de travailler à travers cela.

Voici mon code.

'This is where the error occurs; in the initialization of fileStream 
'Maybe this has something to do with FileAccess and FileMode? I'm not sure. 
Using fileStream As New FileStream(FilePath, FileMode.Create, FileAccess.Write) 
    FileSharingStatusBar.Panels.Item(1).Text = "Receiving file . . ." 
    Do Until TotalData = FileLength 
    If ReadBytes = 0 Then 
     fileStream.Close() 
     FileTransferInterrupted = True 
     Exit Do 
    Else 
     ReadBytes = ClientSocket.GetStream.Read(FileData, 0, FileData.Length()) 
     fileStream.Write(FileData, 0, ReadBytes) 
     TotalData += ReadBytes 
    End If 
    Loop 
End Using 
+0

Vous devrez choisir un meilleur FilePath, assurez-vous qu'il s'agit d'un chemin d'accès complet et sélectionnez un dossier dans lequel vous pouvez écrire. –

+0

Merci pour la réponse. Existe-t-il un autre travail en dehors de la modification du chemin du fichier? Je crois que mon chemin de fichier actuel est un chemin complet et peut être écrit sans aucun problème (supposé être) parce que c'est dans un compte d'administrateur. –

Répondre

0

Après quelques jours, j'ai finalement résolu le problème pour de vrai. J'ai supprimé NetworkStream.Read et NetworkStream.Write dans ma mise en œuvre, et l'a remplacé par BinaryReader.ReadString et BinaryWriter.Write. De cette façon, le filtrage qui gère le transfert et la consignation de fichiers ne fait qu'un, évitant toute confusion lors du transfert réseau.

Questions connexes