第9章VB NET文件操作
知识点1 文件结构
为了有效的对数据进行处理,必须以某种特定的方式 存放数据,这种特定的方式称为文件结构。文件由记 录(Record)组成,一个文件含一个以上的记录,记 录是由一组相关的字段(Field)组成。字段也称域, 由若干字符(Character)组成,用来表示一项数据。 字符是构成文件的最基本单位。字符可以是数字、字 母、特殊符号或单一字节。 例如某班有30名学生,该班的学生相关信息表由如表 9-1所示的30条记录组成;每个学生的基本信息记录由 学号、姓名、性别、年龄和班级等数据项组成;每个 数据项又由相关字母或数字组成。
2.常用方法 (1)Close方法关闭当前流并释放与之关联的 所有资源。 (2)Read方法从文件中读取字节序列 (3)Seek方法设置当前流中的位置,返回一 个Long型值 (4)SetLength方法将该流的长度设置为指定 的值 (5)Write方法用于向文件写入数据
知识点2 文件种类
根据不同的标准,文件可分为不同的类型。 例如根据数据的存取方式和结构可将文件分为顺序文件和随机文 件。 1.顺序文件是最简单、最基本的文件结构。文件中的记录一个接 一个的存放,每条记录的长度不定,记录间的分界符一般为回车 符。顺序文件的查找必须从第一条记录开始逐条顺序读取,一直 找到所需要的数据为止。顺序文件的优点是使用简单,占用内存 资源比较少。缺点是访问速度慢,不易维护。 2.随机文件由固定长度的记录组成,每个记录又由固定数目的数 据项所组成,此外每条记录都有一条记录号。在存取数据时,只要 指明是第几号记录,就可以完成相应的存取操作。其优点是存入和 读取的速度较快,数据容易更新。缺点是占用空间比较大,程序 设计较为麻烦。
Copy 复制文件
例如将c:\setup.txt文件复制到e:\vbnet并改名为 mytext.text,如果有同名文件,则覆盖,语句 如下: File.Copy(“c:\setup.txt”,“ e:\vbnet”,True) 例如在E盘VBNET文件夹下创建myfile.dat文件: File.Create(“E:\VBNET\myfile.dat”)
例如: Dim FileName() As String FileName=Directory.GetFiles(“E:\VBNET”,“*.TXT”, SearchOption.AllDirectories) 表示在E盘下的VBNET 文件夹下及其子文件夹下查找 扩展名为TXT的文件。
任务2 设计一个窗体,显示指定文件夹中所有文件的 文件名,创建时间和文件属性
CreateDirectory 创建文件夹对象 例如:Directory.CreateDirectory (“E:\VBNET”) Delete 删除指定的文件夹 例如Directory.Delete(“E:\VBNET”)表 示要删除E盘下的VBNET空文件夹; 如果该文件夹下含有子文件夹或文件,则 使用Directory.Delete(“E:\VBNET”, True)
System.IO模型的实现包含在System.IO命名空间中, 该命名空间含有对数据流和文件进行同步或异步读 写的类、结构和枚举类型。可以说,System.IO模型 是一个文件操作类库,包含的类可用于文件的创建、 读写、复制、移动和删除等操作。大致可以分为三 类: 操作流的类:包括操作文件流、内存流、读写这些 流的类 操作文件夹的类:文件夹创建、移动、删除已经磁 盘信息访问 操作文件的类:对文件创建、移动、删除、获取文 件信息,如扩展名、创建时间、是否只读等。 其中最常用的类如表9.2所示。
1.VB传统语句和函数直接访问文件 2.通过.NET的System.IO模型以流的方式对各种数据文件进行访问 3.通过文件系统对象模型(FSO)访问文件 本章主要介绍第二种文件访问方式。
9.2 文件流与System.IO模型
对文件的操作一种重要的方法就是利用流来 完成。流的输入和输出是利用System.IO模型来实 现的。 知识点1 System.IO模型概念 System.IO模型提供了一个面向对象的方法访问文 件系统。System.IO模型提供了许多针对文件、文 件夹的操作功能,特别是以流(Stream)的方式对 各种数据进行访问,这种访问方式不仅灵活,而且 可以保证编码接口的统一。
根据文件的数据编码可以将文件分为文本 文件和二进制文件。文本文件是由ASCII码 字符所组成并且不带任何格式的文件,也 称之为ASCII文件,这种文件也可用通常的 字处理软件来建立和编辑;二进制文件是 由二进制格式的数据编码存储的文件,由 于不是使用普通的字符方式保存,所以不 能用普通的字处理软件编辑。 除此之外,可根据存储数据的性质将文件 分为程序文件和数据文件;根据文件的流 向分为输入文件和输出文件;根据文件的 存储介质分为磁盘文件、磁带文件等等。
知识点3 文件访问方式
文件访问主要是对文件的读、写操作。 读文件是将文件中的数据读入计算机内存。即向计算机输入数据。 写文件---------将计算机内存中的数据写入文件中。 顺序文件、随机文件以及二进制文件由于文件中记录的组织方式和 数据编码格式有所差别,所以文件的访问可分为顺序型、随机型和二 进制型。 顺序型适用于读取连续存储的文本文件;随机型适用于读取由固定 长度记录组成的文本文件或二进制文件;二进制型适用于读取任意 有结构的文件,除了没有数据类型和记录的概念外,与随机访问类 似。 提供了3种文件访问的方法:
知识点2 File 类
File类主要执行与文件有关的操作,包括文件的 创建、移动、删除和打开等。所有的File方法都 是静态的,无需类的实例。
AppendAllText 追加文本文件
例如将文本“”添加到E:\VBNET\ABC.TXT文件中, 语句如下: File.AppendAllText(“E:\ VBNET\ABC.TXT”,“”)
Delete 删除文件
例如删除E盘VBNET文件夹下的myfile.dat文件: File.Delete(“E:\VBNET\myfile.dat”)
Exists 判断文件是否存在
以下语句判断E盘VBNET文件夹下是否存在myfile.dat文件,如果存在 则删除。 If File.Exists(“E:\VBNET\myfile.dat”) then File.Delete(“E:\VBNET\myfile.dat”) End If
9.3 文件夹和文件操作
提供了Directory和File等几个类来 实现对文件夹和文件的复制、移动、删 除等操作。本节将介绍与文件夹和文件 操作相关的类及其用法。 任务1 编写一个简易的资源浏览器。
知识点1 Directory类
对文件夹的操作主要利用Directory和DirectoryInfo两个 类来实现,两者很相似。区别在于Directory对象方法 可以直接调用,而DirectoryInfo对象在使用前必须先 建立一个对象的实例,然后才能调用DirectoryInfo方 法。 无论Directory类还是DirectoryInfo类都是System.IO命 名空间的成员,因此在使用两个类之前,需要先引入 System.IO命名空间。 Directory类提供了文件夹操作的全部方法,由于该类 提供的方法是共享的,所以不需要先建立对象就可以 直接调用它的方法,下面介绍它的常用方法:
知识点2 文件流
在现实世界中,“流”是气体或液体运动的一种状态。借 用这个概念,用流(Stream)表示数据的传输操作, 将数据从内存传输到某个载体或设备中,叫做输出流;将 数据从某个载体或设备传输到内存中,叫做输入流。流的 概念进一步拓展,可以把与数据传输有关的事物称为流。 例如把文件变量成为流,除此之外,还有网络流、内存流 等。 将文件看成是顺序的字节流,文件流是字节序列的 抽象概念,因此我们可以把文件视为存储在磁盘上的一系 列二进制字节信息。System.IO模型下读写文件时,不是 直接操作文件,而是通过文件流的某些方法来实现文件的 读写。
GetLogicalDrivers 获取逻辑盘符
该方法功能是返回一个字符串数组,为当前计算机中 所有逻辑驱动器名,每个驱动器名是形如“C:\” 的字符串,格式如下: Directory.GetLogicalDrivers() GetDirectories 获取文件夹下的子文件夹
GetFiles 获取文件夹下的文件
GetAttributes和SetAttributes 获取 和设置文件属性
9.4 文件读写
本节将介绍利用Stream、FileStream、 StreamReader和StreamWriter四个类来 实现文件的读写。 任务3 设计一个能打开文本文件并对其 内容进行读写操作的窗体 要求:利用Stream流将文本显示在窗体多 行文本框中,并修改其内容后写入到磁 盘文件中。
第九章 文件操作
9.1 文件概述
文件是指在各种存储介质上永久存储的数据 的集合,它是进行数据读写操作的基本对象。 例如用Excel或Word编辑制作的表格或文档就 是一个文件,把它存放在磁盘上就是磁盘文 件,输出到打印机上就是一个打印机文件。 计算机以这些设备为对象进行输入输出,对 这些设备的数据统一按文件处理。
一般来说对流的操作有3类: 1.读取:可以从流读取。读取是从流到数据结构(如 字节数组)的数据传输。 2.写入:可以向流写入。写入是从数据源到流的数据 传输。 3.定位:流可以支持查找。查找是对流内的当前位置 进行查询和修改。 提供的Stream类是所有流的基类,由它派生 出文件流FileStream和缓冲区流BufferedStream。在 System.IO模型中,文件操作的基本方式是:用FILE 类打开操作系统文件,建立对应的文件流即 FileStream对象,用StreamReader/StreamWriter类提 供的方法对该文件流(文本文件)进行读写或用 BinaryReader/BinaryWriter类提供的方法对该文件流 (二进制文件)进行读写。