加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在VB.Net中将MemoryStream转换为字节数组

发布时间:2020-12-17 07:18:49 所属栏目:百科 来源:网络整理
导读:我试图将从richeditDocument生成的内存流转换为字节数组.代码如下: Public Sub saveAsTemplate_Click(ByVal sender As Object,ByVal e As System.EventArgs) Dim ms As MemoryStream = New MemoryStream() richEditControl1.SaveDocument(ms,DocumentFormat
我试图将从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,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读