你打開文件兩次 - 一次是閱讀,一次是寫作。這意味着一個FileStream
需要FileAccess.Read
和FileShare.Write
,而另一個需要FileAccess.Write
和FileShare.Read
。此代碼測試,並與那些已經有一個Integer
,並寫入到其與BinaryWriter
一個String
文件驗證:
Dim filePath As String = Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments, "Test.bin")
Using source = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Write),
destination = File.Open(filePath, FileMode.Open, FileAccess.Write, FileShare.Read),
reader As New BinaryReader(source),
writer As New BinaryWriter(destination)
Dim n = reader.ReadInt32()
writer.Write(98765)
writer.Write("What's up doc?")
Dim sz = reader.ReadString()
End Using
請注意,您應該只指定Read
或Write
如果這是所有的需要。如果您知道您會或可能需要兩者,請只指定ReadWrite
。 FileAccess
值是用於此FileStream
將對文件執行或可能執行的操作,而FileShare
值用於允許在同一文件上打開的其他FileStream
對象執行的操作。
除了提供的答案之外,如果打算打開同一文件兩次 - 一次用於讀取,一次用於寫入 - 那麼您應該使用'FileAccess.Read'作爲一個文件,另一個文件'FileAccess.Write'。此外,不要使用'FileStream'構造函數打開一次文件,也不要使用'File.Open'打開一次文件。保持一致並且兩次使用相同的方法。另外,使用'Using'塊打開文件,以便在完成後隱式關閉它。 – jmcilhinney