vb第9章 文件管理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.顺序文件的读取操作
读取内容,应以input方式打开该文件。 然后可以使用以下两种语句和一个函数将文件 从盘读到内存变量中: Input #<文件号>,<变量名1>[,<变量名2>…] Line Input #<文件号>,<变量名> Input(Length,#<文件号>)
说明:
(1) Input #语句可以读取文件中的数据列。 (2)<文件号>是用Open语句打开文件时指定的文件 句柄,<变量名>为内存变量名。 (3)Line Input # 语句在读取数据时,会一直读到 回车l换行符或文件尾为止,再读则从下一行开 始。 (4) Length用来指定从文件中读取字符的长度。 另外: 用LOF(文件号)函数来返回文件的大小,以字节为 单位。 用EOF(文件号)函数来测试是否文件尾。
第9章 文件管理
第9章 文件管理
大多数的应用程序都需要读写磁盘文件。本 章主要介绍如何建立文件、读取文件、写文件等 各种操作。 9.1 公共对话框(略) 9.2 数据文件 数据文件按照其数据的存放方式,分为以下3种 类型: (1)顺序型——用于连续存放的文本数据。 (2)随机型——用于有固定长度记录结构的文 本数据或者二进制数据。 (3)二进制型——用于二进制数据。(略)
Private Sub Command2_Click() Dim lastrec As Integer With da lastrec = LOF(1) / Len(da) Put #1, lastrec + 1, da .XH = Text1(0).Text Close #1 .xm = Text1(1).Text Call Form_Load .yw = Val(Text1(2).Text) Text1(0).SetFocus .wy = Val(Text1(3).Text) End Sub .sx = Val(Text1(4).Text) End With Open "xsda2.dat" For Random As #1 Len = Len(da)
(2)使用Put#语句可以把数据写入或替换随机文件中 的记录: Put #<文件号>,<记录号>,<变量名> 其中,<文件号>是打开文件时指定的文件句 柄,<记录号>是要写入或替换的记录位置,<变量 名>是接收记录的内容的记录型变量名。 (3)添加记录,应使用前述代码段中所示的Put语句。 把<记录号>的值设置为比文件中的记录数多1。 (4)删除记录。通过清除其字段可以删除一个记录, 但是该记录仍在文件中存在。通常文件中不能有 空记录,因为它们会浪费空间且会干扰顺序操作。 最好把余下的记录拷贝到一个新文件,然后删除 老文件。
(2)编写代码。 首先在窗体的通用过程段创建用户定义类 型并声明变量: Private Type cj XH As String * 6 xm As String * 6 yw As Integer wy As Integer sx As Integer End Type Private da As cj
编写“删除”命令按钮Command3的Click事件代码:
Private Sub Command3_Click() Dim lastrec As Integer recnum = List1.ListIndex + 1 Open "rec.tem" For Random As #1 Len = Len(da) Open "xsda2.dat" For Random As #2 Len = Len(da) lastrec = LOF(2) / Len(da) For n = 1 To lastrec Text1(4).Text = .sx If n <> recnum Then End With Get #2, n, da End If Put #1, , da Next Else Close #1 Get #2, n, da Close #2 With da Kill "xsda2.dat" Text1(0).Text = .XH Name "rec.tem" As "xsda2.dat" Text1(1).Text = .xm Call Form_Load Text1(2).Text = .yw Text1(0).SetFocus Text1(3).Text = .wy End Sub
说明:
(1)<文件名>为所要操作的文件名称。 (2)Random是缺省的访问类型,所以 For Random 关键字是可选项。 (3)<文件号>用来标识打开文件的文件句柄,必须是 1~511之间的整数。打开的文件将通过<文件号 >来进行读写操作。 (4)Len=(记录长度)指定了每条记录的长度。如 果(记录长度)比写文件记录的实际长度短,则 会产生一个错误。如果(记录长度)比记录的实 际长度长,则记录可写入,只是会浪费些磁盘空 间。可以用Len()函数来返回记录的长度。 随机文件的关闭同顺序文件一样,其格式: Close #<文件号>
例2:将学生成绩表中数据读出并显示
Open "STW.DAT" For Input As #2 Do While True Input #2, XH, XM, CJ Print XH; Tab(10); XM; Tab(20); CJ If EOF(2) Then Exit Do End If Loop Close #2
例1:建立一个存放学生成绩表的文件
Open "STW.DAT" For Output As #1 I=1 Do While True XH = InputBox("请输入学号:", "记录" & I) If LTrim(RTrim(XH)) = "0" Then '学号为0退出 Exit Do End If XM = InputBox("请输入姓名:", "记录" & I) CJ = Val(InputBox("请输入成绩:", "记录" & I)) Write #1, XH, XM, CJ I=I+1 Loop Close #1
要清除随机文件中删除的记录,请按照以 下步骤执行:
.创建一个新文件。 .把有用的记录从原文件复制到新文件。 .关闭原文件并用Kill语句删除它。 删除格式:kill <文件名> .使用Name语句把新文件以原文件的名字重新命名。 重新命名格式:name <原文件名> as <新文件名>
【例9-3】利用随机文件保存学生的成绩, 可以输入学生的学号、姓名以及3门功课的成 绩,浏览或删除数据,如图9-9所示。
编写窗体的Load事件代码,使之具有显示数据的功能:
Private Sub Form_Load() Dim lastrec As Integer, sx As Single Dim yw As Single, wy As Single Open "xsda2.dat" For Random As #1 Len = Len(da) lastrec = LOF(1) / Len(da) List1.AddItem MSG List1.Clear Next For n = 1 To lastrec Close #1 Get #1, n, da If List1.ListIndex > -1 Then With da Command3.Enabled = True XH = Format(.XH, "@@@@@@") Else xm = Format(RTrim(.xm), "@@@@@@") Command3.Enabled = False yw = Format(.yw, "####") End If wy = Format(.wy, "####") End Sub sx = Format(.sx, "####") MSG = XH & xm & " " & yw & " " & wy & " " & sx End With
9.2.1 访问顺序文件
顺序文件是普通的文本文件,其结构简单。 它的存储方式是顺序存储,即一个数据接着一个 数据地顺序排列,只提供第1个记录的存储位置。 要查找一个数据时,必须从头读取直到找到要找 的记录位置。这种文件的数据以字符形式存储。 1.顺序文件的打开与关闭 打开文件: 要对文件操作,首先要打开文件。打开顺序型 文件语句: Open <文件名> For {InPut I OutPut I Append} As <文件号> [Len = buffersize]
(6)Len参数指定缓冲区的字符数。 例:Open “abc” for output as #1 Oprn “abc1” for input as #2 关闭文件: 打开一个文件(用Input、Output或 Append 方式)以后,在为其他类型的操作重新打开它之前 必须先使用Close语句关闭它。其语法为: Close <文件号1>[,<文件号2>…] 例: Close #1,#2 其中,<文件号>是用Open语句打开文件时指 定的文件句柄。
设计步骤如下: (1)建立应用程序用户界面与设置对象属性。 选择“新建”工程,进入窗体设计器,首先增 加两个框架Frame1和Frame2。选定Frame1,在其 中增加一个文本框数组Text1(0)~Text1(4)、 两个命令按钮Conunand1~Command2和5个标签。 选定Frame2,在其中增加一个列表框List1和一个 命令按钮Command3。 设置框架、文本框、标签、列表框和命令按钮 的属性如图9-9所示。
2.随机文件的读写操作 对打开的随机文件中的记录进行编辑,要 先把记录从文件读到内存变量,然后改变各变 量的值,最后,把变量写回该文件。 (1)把记录读入变量,使用 Get语句: Get #<文件号>,<记录号>,<变量名> 其中,<文件号>是打开文件时指定的文 件句柄,<记录号>是要读入的记录号数;而< 变量名>是接收记录内容的记录型变量名,一 般声明为用户定义类型。
9.2.2 访问随机文件
随机文件的读写顺序没有限制,一行数据称 为一条记录。每一个记录都有固定的长度和记 录号。在存入数据时,通过记录号可把数据存 入指定的位置。读取数据时,只需给出记录号, 就能直接读取该记录。数据文件可以同时进行 输入输出操作。 1.随机文件的打开与关闭 随机文件的打开仍用 Open语句,但其语法不 同: Open <文件名> [For Random] As <文件号> Len=(记录长度)
编写“新记录”命令按钮Conunand1的Click事件代码 Private Sub Command1_Click() For i = 0 To 4 Text1(i).Text = "" Next Text1(0).SetFocus End Sub
编写“添加”命令按钮Conunand2的Click事件代 码:
3.顺序文件的写入操作
要将数据写人文本文件,应以Output或 Append 方式打开该文件。然后使用 Print#或者Write#语句 将数据写入文件中: Print #<文件号>,<数据>[{,或;}] Write #<文件号>,<数据> 说明: (1)<文件号>是用 Open语句打开文件时指定的文件句柄, <数据>是要写入文件中的数据。 (2)“,”表示下一个字符在下一个格式区开始输出, “;”表示下一字符紧随前一个字符输出。若无{, 或;}选项,Print #语句会在字符结束处添加一对回 车l换行符。 (3)Print#语句常与 Line input #语句配合使用。 (4)Write#语句常与Input#语句配合使用。
说明:
(1)<文件名>为所要操作的文件名称,包括整个路径和文 件名。 (2)Input选项用来从文件中读取。此时该文件必须已经存 在,否则,会产生一个错误。 (3)Output选项用来在磁盘上创建一个新的顺序文件,文 件打开后文件指针位于文件开头,准备向文件写入数 据。磁盘上的同名文件将被覆盖。 (4)Append选项用来打开或创建一个新的顺序文件,文 件打开后文件指针位于文件的末尾,准备向文件的尾 部追加方式写入数据。若磁盘上没有该文件,则创建 一个新文件。 (5)<文件号>是用来标识打开文件的文件句柄,必须是1 到511之间的整数。打开的文件将通过<文件号>来进 行读写操作。