转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
把握VB.NET中的流(Stream) (一)         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2028 更新时间:2009/4/23 19:01:04

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

 

当你第一次用VB.NET读写文件的时候,你肯定会发现VB.NET摒弃了传统的文件I/O支持,感觉不习惯。其实,在.NET里面,微软用丰富的“流”对象取代了传统的文件操作,而“流”,是一个在Unix里面经常使用的对象。

 

       我们可以把流当作一个通道,程序的的数据可以沿着这个通道”流”到各种数据存储机构(比如:文件,字符串,数组,或者其他形式的流等)。为什么我们会摒弃用了那么久的IO操作,而代之为流呢?其中很重要的一个原因就是并不是所有的数据都存在于文件中。现在的程序,从各种类型的数据存储中获取数据,比如可以是一个文件,内存中的缓冲区,还有InterneT。而流技术使得应用程序能够基于一个编程模型,获取各种数据,而不必要学会怎么样去获取远程web服务器上的一个文件的具体技术。我们只需要在应用程序和web服务器之间创建一个流,然后读取服务器发送的数据就可以了。

 

流对象,封装了读写数据源的各种操作,最大的优点就是一当你学好怎么样操作某一个数据源时,你就可以把这种技术扩展到其他形形色色的数据源。

 

流的种类

流是一个抽象类,你不能在程序中申明Stream的一个实例。在.NET里面,由Stream派生出5种具体的流,分别是

 

FileStream       支持对文件的顺序和随机读写操作

MemoryStream   支持对内存缓冲区的顺序和随机读写操作

NETworkStream  支持对Internet网络资源的顺序和随机读写操作,存在于System.Net.Sockets名称空间

CryptoStream    支持数据的编码和解码,存在于System.Security.Cryptography 名称空间

BufferedStream  支持缓冲式的读写对那些本身不支持的对象

 

 

并不是所有的Stream都采用用完全一摸一样的方法,比如读取本地文件的流,可以告诉我们文件的长度,当前读写的位置等,你可以用Seek方法跳到文件的任意位置。相反,读取远程文件的流不支持这些特性。不过,Stream本身有CanSeek, CanRead 和 CanWrite属性,用于区别数据源,告诉我们支持还是不支持某中特性。

 

下面我们简单介绍一个FileStream类

 

FileStream类

 

进行本地文件操作的时候,我们可以采用FileSteam类, 可以很简单的读写为字节数组(arrays of bytes)。对于简单数据类型的数据的读写,可以采用BinaryReader 和BinaryWriter以及StreamReader,StreamWriter类。 BinaryReader,用特定的编码将基元数据类型读作二进制值。BinaryWriter以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。StreamReader/Writer则是把数据存储为XML格式。在VB.NET里面采用那个区别不大,因为所用的类都应用于两种格式。

VB.NET支持传统的随机读写文件,你可以创建文件,用于存储Struct,然后根据记录数访问。就像在以前的Vb版本中一样,用FileOpen,FileGet函数。很大程度上,这已经被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 和 SaveFileDialog控件的OpenFile方法。

不需要指定任何参数。 OpenFileDialog的OpenFile方法以只读方式打开文件; SaveFileDialog的OpenFile方法以读写方式打开文件。

 

FileStream只支持最基本的操作,把数据写入字节数组或者从字节数组写入文件中。如果我们用FileStream把数据保存在文件中,首先把数据转化为Byte数组,然后调用FileStream的Write方法。同样,FileStream的Read方法,返回的也是字节数组。你或许不会经常直接使用FileStream对象,我们还是有必要简单看一下它的基本功能

创建FileStream对象之后,调用WriteByte 写一个字节到文件中。 Write方法可以将一个数组写入文件中,需要三个参数

   Write(buffer, offset, count)

Buffer是要写入数组地址,offset是偏移量,count指写入字节数量,Read的语法也一样。

 

由于FileStream要跟Bytes Array打交道,所以研究一下ASCIIEncoding 的GetBytes和UnicodeEncoding 的GetChars很有必要

 

下面的例子是一个转换操作。

   Dim buffer() As Byte

   Dim encoder As New System.Text.ASCIIEncoding()

   Dim str As String = "This is a line of text"

   ReDim buffer(str.Length - 1)

&nb

[1] [2]  下一页


[VB.NET程序]把握VB.NET中的流(Stream) (三)  [VB.NET程序]把握VB.NET中的流(Stream) (二)
[Delphi程序]variant 和 Stream 的互換  [Web开发]用ADODB.Stream代替FSO读取文本文件
[Web开发]使用XMLHttp和ADODB.Stream取得远程文件并保存到本…  [Web开发]ASP中利用ADODB.Stream对象将字节流转换为字符流
[Web开发]用Adodb.Stream将以二进制方式保存在数据库中的文…  [Web开发]利用adodb.stream直接下载任何后缀的文件(防盗链)
[Web开发]adodb Stream 详细用法  [Web开发]关于Adodb.Stream的写数据库数据到客户端文件的实…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台