数据流是面向对象程序设计语言中面向对象思想的典型体现,它彻底地取代了早期的利用函数实现输入输出的功能,克服了用函数实现输入输出功能的诸多弊端。简单来说,流就是建立在面向对象基础上的一种抽象的处理数据的工具。 在流中,可定义一些处理数据的基本操作,如读取数据、写入数据等,程序员是对流进行操作,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。掌握好对流的操作在并程序中充分利用流的方便性,不仅能使在编写面向过程的程序时效率大大提高。本文以文件加密为例说明delphi编程中流的概念及应用。
一、流的基本概念
在delphi中,所有流对象的基类为tstream类,其中定义了所有流的共同属性和方法。
tstream类中定义的属性介绍如下:
(1)size:此属性以字节为单位返回流中数据大小。
(2)position:此属性控制流中存取指针的位置。
tstream类中定义的四个虚方法:
(1)read:此方法实现将数据从流中读出。
函数原形为:
function read(var buffer;count:longint):longint;virtual;abstract;
参数buffer为数据读出时放置的缓冲区,count为需要读出的数据的字节数,该方法返回值为实际读出的字节数,它可以小于或等于count中指定的值。
(2)write:此方法实现将数据写入流中。
函数原形为:
function write(var buffer;count:lonogint):longint;virtual;abstract;
参数buffer为将要写入流中的数据的缓冲区,count为需要写入数据的长度字节数,该方法返回值为实际写入流中的字节数。
(3)seek:此方法实现流中指针的移动。函数原形如下:function seek(offset:longint;origint:word):longint;virtual;abstract;参数offset表示以origint为基准指针移动的方向和字节数,为正表示指针从数据头向数据尾移动,为负表示指针从数据尾向数据头方向移动。参数origint指出指针移动参照的基准,其可能的取值如下:a)sofrombeginning:offset以数据开始处为基准移动,此时offset必须大于或者等于零。b)sofromcurrent:offset以指针的当前位置为基准。c)sofromend:offset以数据结束的位置为基准。此时offset必须小于或者等于零。该方法返回值为移动后指针的位置。
(4)setsize:此方法实现改变数据的大小。
函数原形为:
function setsize(newsize:longint);virtual;
tstream类中定义的三个静态方法:
(1)readbuffer:此方法的作用是从流中当前位置读取数据。函数原形为:procedure readbuffer(var buffer;count:longint);参数的定义跟上面的read函数相同。需要注意的是,当读取的数据字节数与需要读取的字节数不相同时,该函数将产生ereaderror异常。
(2)writebuffer:此方法的作用是在当前位置向流写入数据。函数原形为:procedure writebuffer(var buffer;count:longint);参数的定义跟上面的write函数相同,同样,当写入的数据字节数与需要写入的字节数不相同时,将产生ewriteerror异常。
(3)copyfrom:此方法的作用是从其它流中拷贝数据流。函数原形为:function copyfrom(source:tstream;count:longint):longint;参数source为源数据流,count为拷贝的数据字节数。当count大于0时,copyfrom从source参数的当前位置拷贝count个字节的数据;当count等于0时,copyfrom设置source参数的position属性为0,然后拷贝source的所有数据。
tstream派生类中最常用的是tfilestream类,该类一般被用来存取文件。建立一个tfilestream类实例声明如下:constructor create(const filename:string;mode:word);其中filename为文件名(包括路径),参数mode为找开文件的方式,它包括文件的打开模式和共享模式,其可能的取值和意义可以参考相关帮助。
tstream还有一个叫内存流的派生类tmemorystream,它在内存中建立一个流对象,其基本方法和函数跟tfilestream类相似。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器