在 VB.Net 中将内存流转换为字节数组



我正在尝试将从richeditDocument生成的内存流转换为字节数组。代码给出如下:

Public Sub saveAsTemplate_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim ms As MemoryStream = New MemoryStream()
    richEditControl1.SaveDocument(ms, DocumentFormat.Rtf)
    GetStreamAsByteArray(ms)
    MessageBox.Show("save")
End Sub
Private Function GetStreamAsByteArray(ByVal stream As MemoryStream) As Byte()
    Dim streamLength As Integer = Convert.ToInt32(stream.Length)
    Dim fileData As Byte() = New Byte(streamLength) {}
    ' Read the file into a byte array
    stream.Read(fileData, 0, streamLength)
    stream.Flush()
    stream.Close()
    Return fileData
End Function

是生成的,因为我可以获得流长度,但是最终的咬合数组仅由 0 组成,使其无效。如何获得它的正确字节数组?

如果要

从内存流中读取,则需要确保流的当前位置位于开头。

此外,您使用Read方法错误。它返回读取的字节数,该字节数可能小于请求的字节数。要正确使用它,您需要循环,直到获得流中的所有字节。

但是,您应该只使用 ToArray 方法将流中的所有内容作为字节数组获取:

Private Function GetStreamAsByteArray(ByVal stream As MemoryStream) As Byte()
  Return stream.ToArray()
End Function

'这对我使用 100mb .txt的文件有用

    Public Function read()
    Dim tmpdb(0) As String
    Try
        tmpdb = IO.File.ReadAllLines("C:UsersAdmin01DesktopTmpTxt.txt")
        FileOpen(1, "C:UsersAdmin01DesktopIRSH_TEST_DB.jrdb", OpenMode.Binary, OpenAccess.Write)
        FilePut(1, tmpdb)
        FileClose(1)
        MessageBox.Show("SUCCES!")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Function

相关内容

  • 没有找到相关文章

最新更新