1

私のファイル転送アプリケーションは現在動作しており、ファイルを本来の方法で転送しています。しかし、スタックオーバーフローの誰かが光を当てることができると信じている別の問題に遭遇しました。

ターゲットの場所に重複がない状態で初めてファイルを転送した場合、またはプログラムの実行中に既存の重複ファイルを上書きするために同じファイルを再度転送した場合、問題は発生しません。しかし、プログラムを閉じてから再度開いて同じファイルを再度転送すると、以前に転送されたファイルの既存の複製がターゲットの場所にあるため、問題が発生します。

エラーが発生しますUnauthorizedAccessException: Access to the path denied

管理者アカウントでソフトウェアを実行しているため、これはユーザー権限の問題ではないと思います。しかし、もちろん、これについて 100% 確信があるわけではありません。私の仮定が間違っている場合は、修正してください。

これについて何か提案はありますか?いくつかのコードと組み合わせて使用​​することでこれを処理できると思いますが、これを処理File.Existするより良い方法があるに違いありません。

これが私のコードです。

'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
4

1 に答える 1

0

数日後、ついに問題を実際に解決しました。NetworkStream.Read実装でandを削除し、 andNetworkStream.Writeに置き換えました。これにより、ファイル転送とロギングを処理するフィルタリングが 1 つになり、ネットワーク転送中の混乱を回避できます。BinaryReader.ReadStringBinaryWriter.Write

于 2013-02-28T12:51:14.847 に答える