笔记6:vb.net的内存数据流MemoryStream、缓冲数据流BufferedStream

笔记6:vb.net的内存数据流MemoryStream、缓冲数据流BufferedStream,第1张

概述内存数据流         内存数据流,就是利用内存作为数据的存储区,此时可把这块内存区当作是文件。         它同样派生于Stream类,也具有Read与Write的方法。           MemoryStream类的构造方法几个         可以根据指定大小创建一个内存区域(流),例子用此方法         也可以根据缓冲数据创建一个内存区域(流)         Public


内存数据流


内存数据流,就是利用内存作为数据的存储区,此时可把这块内存区当作是文件。

它同样派生于Stream类,也具有Read与Write的方法。

MemoryStream类的构造方法几个

可以根据指定大小创建一个内存区域(流),例子用此方法

也可以根据缓冲数据创建一个内存区域(流)

Public Sub New ( buffer As Byte(),index As Integer,count As Integer,writable As Boolean )


下面是内存流与文件流的区别(下面文件流标错,应该是文件,其上下箭头才是文件流)

通常两个的联系是通过一个数组(缓冲)这个搬运工来联系。




对于一块内存块,有两个有用的成员:

ToArray 把内存块的数据转化成一个数组

Writeto 把数据(字节或数组)写入到内存块中。


下例:用文件流与内存流 *** 作文件。

利用文件流来填充数组btAll,然后取数组部分数据填充内存块(内存流写),最后直接把内存块转为数组来显示。

    Private Sub button2_Click(sender As Object,e As EventArgs) Handles button2.Click        Dim btArray(3) As Byte        Dim btAll As Byte()  '装载整个文件字节        Dim ms As New MemoryStream(4)        Dim fs As New fileStream("D:.txt",fileMode.Open,fileAccess.Read)        ReDim btAll(fs.Length)        fs.Read(btAll,fs.Length)        ms.Write(btAll,5,4) '相当把文件中第5位置起4个字节写入内存        btArray = ms.ToArray '把内存转存到数组中        TextBox2.Text = EnCoding.ASCII.GetString(btArray)        ms.Close()        fs.Close()    End Sub







缓冲数据流



一、为什么要缓冲数据流(内存数据流)

文件流它的数据源或目的地都是文件,它们都涉及到文件的打开与关闭等 *** 作。


但是,对于一些特殊的I/O来说,并不适合。比如,数据打印 *** 作,程序将数据放到打印队列中等待打印,

此时缓冲区就被作为了数据源,它取代一般的数据存储装置(比如文件),是缓冲区进行了数据的存取。

显然这时用文件流来 *** 作是不适合的。


在网络传输中,缓冲数据流也起到很好的作用。



二、什么是缓冲数据流?

缓冲区是内存中的一块保留区域,专门用以存储应用程序执行所产生的暂存数据。

比如前面文件流中缓冲数据,也充当着缓冲的功能,也叫缓冲数组。


利用缓冲区进行数据读写,可以大提升数据存取交通,并且同时减少打开、关闭文件所耗用的资源。


.Net对于缓冲区数据的存取 *** 作,由BufferedStream类完成。

BufferedStream类派生于Stream类,其数据读写方法与fileStream类似。



三、缓冲数据流的构造与方法

BufferedStream类以另一个数据流对象作为初始化底层数据流来源,如:

Public Sub New ( ByVal stream as Stream)


也可以是下面构造:

Public Sub New ( ByVal stream As Stream,ByVal bufferSize As Integer)


上面对象一旦建立后,便 可利用内存缓冲区存取底层数据,因此不需要针对stream连接的设备进行 *** 作。


上面两个构造函数,都将使用预设的缓冲区大小,第一个默认是4096字节,第二个是自定义。



BufferedStream与fileStream一样,提供相同的数据读写方法。

但要注意: 不能同时对BufferedStream流进行读和写;

总结

以上是内存溢出为你收集整理的笔记6:vb.net的内存数据流MemoryStream、缓冲数据流BufferedStream全部内容,希望文章能够帮你解决笔记6:vb.net的内存数据流MemoryStream、缓冲数据流BufferedStream所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1276771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存