vb.net中:把握VB.NET中的流(Stream) (一)



把握VB.NET中流(Stream) ()

当你第次用VB.NET读写文件时候你肯定会发现VB.NET摒弃了传统文件I/O支持感觉不习惯其实在.NET里面微软用丰富“流”对象取代了传统文件操作而“流”个在Unix里面经常使用对象
我们可以把流当作个通道数据可以沿着这个通道”流”到各种数据存储机构(比如:文件或者其他形式流等)为什么我们会摒弃用了那么久IO操作而代的为流呢?其中很重要个原因就是并不是所有数据都存在于文件中现在从各种类型数据存储中获取数据比如可以是个文件内存中缓冲区还有InterneT而流技术使得应用能够基于个编程模型获取各种数据而不必要学会如何样去获取远程web服务器上个文件具体技术我们只需要在应用和web服务器的间创建个流然后读取服务器发送数据就可以了
流对象封装了读写数据源各种操作最大优点就是当你学好如何样操作某个数据源时你就可以把这种技术扩展到其他形形色色数据源
种类
流是个抽象类你不能在中申明Stream个例子在.NET里面由Stream派生出5种具体分别是:
    FileStream 支持对文件顺序和随机读写操作
    MemoryStream 支持对内存缓冲区顺序和随机读写操作
    NETworkStream 支持对Internet网络资源顺序和随机读写操作存在于.Net.Sockets名称空间
    CryptoStream 支持数据编码和解码存在于.Security.Cryptography 名称空间
    BufferedStream 支持缓冲式读写对那些本身不支持对象
并不是所有Stream都采用用完全思路方法比如读取本地文件可以告诉我们文件长度当前读写位置等你可以用Seek思路方法跳到文件任意位置相反读取远程文件流不支持这些特性不过Stream本身有CanSeek CanRead 和 CanWrite属性用于区别数据源告诉我们支持还是不支持某中特性
下面我们简单介绍个FileStream类
FileStream类
进行本地文件操作时候我们可以采用FileSteam类 可以很简单读写为字节(.gif' />s of s)对于简单数据类型数据读写可以采用BinaryReader 和BinaryWriter以及StreamReaderStreamWriter类 BinaryReader用特定编码将基元数据类型读作 2进制值BinaryWriter以 2进制形式将基元类型写入流并支持用特定编码写入StreamReader/Writer则是把数据存储为XML格式在VB.NET里面采用那个区别不大所用类都应用于两种格式
VB.NET支持传统随机读写文件你可以创建文件用于存储Struct然后根据记录数访问就像在以前Vb版本中用FileOpenFileGet很大程度上这已经被XML或者数据库取代如果你创建新应用而有不需要考虑跟就版本兼容问题建议采用.NET新特性
不管你将要使用拿个StreamClass你都必须创建个FileStream对象有很多方式创建最简单就是指定文件路径打开模式如下面语法
Dim fStream As New FileStream(path fileMode fileAccess)
Path要包含文件路径以及文件名fileMode是枚举类型FileMode成员的如下表所示fileAccess是枚举类型FileAccess成员Read (只读) ReadWrite (读写) and Write (写操作)决定了文件读写权限
成员名称
介绍说明
Append
打开现有文件并查找到文件尾或创建新文件
Create
指定操作系统应创建新文件如果文件已存在它将被改写
CreateNew
指定操作系统应创建新文件
Open
指定操作系统应打开现有文件
OpenOrCreate
指定操作系统应打开文件(如果文件存在);否则应创建新文件
Truncate
指定操作系统应打开现有文件文件旦打开就将被截断为为零字节大小
当然你也可以用 (Open, OpenRead, OpenText, OpenWrite)创建FileStream
Dim FS As New FileStream = IO.File.OpenWrite(\"c:\\Stream.txt\")
另外种方式打开文件可以用OpenFileDialog 和 SaveFileDialogControl控件OpenFile思路方法
不需要指定任何参数 OpenFileDialogOpenFile思路方法以只读方式打开文件; SaveFileDialogOpenFile思路方法以读写方式打开文件
FileStream只支持最基本操作把数据写入字节或者从字节写入文件中如果我们用FileStream把数据保存在文件中首先把数据转化为Byte然后FileStreamWrite思路方法同样FileStreamRead思路方法返回也是字节你或许不会经常直接使用FileStream对象我们还是有必要简单看下它基本功能
创建FileStream对象的后WriteByte 写个字节到文件中 Write思路方法可以将写入文件中需要 3个参数
Write(buffer off count)
Buffer是要写入地址off是偏移量count指写入字节数量Read语法也
由于FileStream要跟Bytes Array打交道所以研究下ASCIIEncoding GetBytes和UnicodeEncoding GetChars很有必要
下面例子是个转换操作
Dim buffer As Byte
Dim encoder As New .Text.ASCIIEncoding
Dim str As String = \"This is a line of text\"
ReDim buffer(str.Length - 1)
Encoder.GetBytes(str 0 str.Length buffer 0)
FS.Write(buffer 0 buffer.Length)
注意:必须Resize要写入Byte为要读写长度 
Tags:  vb.net语法 vb.net教程 vb.net vb.net中

延伸阅读

最新评论

发表评论