1

この関数を使用して、それからバイトを取得してデータベースに送信しようとしています

Public Function GetBinary(ByVal Path As String) As Byte()
    Dim fStream As New FileStream(Path, FileMode.Open, FileAccess.Read, FileShare.None)
    Dim fLen As Integer = fStream.Length
    Dim br As New BinaryReader(fStream)
    Dim data As Byte() = br.ReadBytes(fLen)
    Return data
End Function

しかし、私がそれを使用すると、エラーが発生します私が選択したファイルが別のアプリケーションによって開かれているようです,,,

エラーメッセージ >

The process cannot access the file 'C:\Users\LOAI\Desktop\2011-11-23 15.47.36.jpg' because it is being used by another process.

このエラーなしでファイルを選択し、画像からバイトを取得するにはどうすればよいですか

よろしくお願いします

4

1 に答える 1

1

問題は、指定していることにあるようですFileShare.None。そうすることで、他のプロセスでもそのファイルが開かれている場合、そのファイルを開くことができないようにします。MSDN の記事から:

現在のファイルの共有を拒否します。(このプロセスまたは別のプロセスによる) ファイルを開く要求は、ファイルが閉じられるまで失敗します。

他のプロセスが同時にファイルにアクセスしているかどうかに関係なく、ファイルを読み取り専用で開きたい場合は、おそらく次のように指定する必要がありますFileShare.Read

その後、ファイルを読み取り用に開くことができます。このフラグが指定されていない場合、(このプロセスまたは別のプロセスによって) 読み取り用にファイルを開く要求は、ファイルが閉じられるまで失敗します。ただし、このフラグが指定されている場合でも、ファイルにアクセスするには追加のアクセス許可が必要になる場合があります。

于 2013-08-16T20:43:43.850 に答える