[英]Simultaneously read and write binary file
我想同時讀寫二進制文件,但是每當嘗試這樣做時,我總是會收到一個異常,指出該文件已被其他進程使用。 我知道如何使用普通的FileStream
來執行此操作,但是使用BinaryReader
和BinaryWriter
則行不通。
有人知道如何同時讀寫二進制文件嗎?
到目前為止,我所做的是:
FileSt = New FileStream("file.bin", FileMode.Create,FileAccess.ReadWrite)
writer = New BinaryWriter(FileSt, enc)
reader = New BinaryReader(File.Open("file.bin", FileMode.Open))
您需要在文件上設置FileShare模式。
FileStream blah = new FileStream("file.bin", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
您要打開文件兩次-一次用於讀取,一次用於寫入。 這意味着一個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
對象執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.