我正在尝试将一个字节数组写入文件,我认为这应该很简单。我正在尝试使用MemoryStream
获取byte()
并将其复制到FileStream
。请参阅下面的代码。
If File.Exists(path) Then
Dim sr As StreamReader = New StreamReader(path)
Do While sr.Peek() >= 0
sr.Read()
Loop
sr.Close()
Else
res = GetInfo(timeout, bytes)
If res = 0 Then
Dim s As Stream = New FileStream(path, FileMode.Create, FileAccess.ReadWrite)
Dim stream As New MemoryStream(bytes)
stream.CopyTo(s)
stream.Dispose()
' do other stuff
End If
End If
它编译得很好但是当我检查写入的文件时,数据已损坏,看起来像:
ͤI¶µ&Ôœ¸Šíd9ïè´5ì#~¿g•ø9£ÓÙ=¸Š€8j]f½’˜»4e18+jš³VÀú¸àc?ê
我尝试过的其他事情:
StreamWriter
。它工作正常,但我在这里读到它应该只用于String
而不是byte
s,所以我没有使用它。FileStream.Write
方法,数据再次损坏MemoryStream.WriteTo
方法,数据再次损坏字节数组如下所示:
105
203
13
47
...
我的数据实际上是Byte()
但是使用Byte
方法损坏并使用String
方法,因此有点令人困惑。我错过了一步还是什么?
答案 0 :(得分:2)
如果您的内存流可以正确读取文件/字节,那么它可以将其写入!
Dim bytes as Byte() = New Byte(memoryStream.length)
filestream.Write(bytes, 0, bytes.Length)
ms.Close
如果只是一些文字数据,请执行以下操作:
IO.File.WriteAllText("pathhere","String Here")
要阅读流,请执行以下操作:
Using ms As MemoryStream = New MemoryStream()
Using file As FileStream = New FileStream("filePath", FileMode.Open, FileAccess.Read)
Dim bytes As Byte() = New Byte(file.Length - 1) {}
file.Read(bytes, 0, CInt(file.Length))
ms.Write(bytes, 0, CInt(file.Length))
End Using
End Using