内容正文:
项目1 1 文件
2
项目目标
了解文件的分类
掌握顺序文件的打开和关闭
掌握顺序文件的存取操作
掌握随机文件的存取操作
重点:顺序文件、随机文件的打开和关闭
难点:顺序文件、随机文件的读、写操作
3
1、文件的分类
记录:计算机处理数据的基本单位,由若干个相互关联的数据项组成 。相当于表格中的一行。
文件:记录的集合,相当于一张表。
文件类型:顺序文件 、随机文件 、二进制文件
访问模式:顺序、随机、二进制三种访问模式。
11.1 文件的基本概念
4
2、文件的一般步骤
(1)用open语句将文件打开。
(2)根据需要 ,把文件中的部分或全部数据读到变量中。
(3)对变量中的数据进行处理。
(4)将处理后的数据重新保存到文件中。
11.1 文件的基本概念
注意:所有文件打开后必须关闭。
5
顺序文件是普通的文本文件,是一种结构比较简单的格式。
11.2 顺序文件
思考 :顺序文件的特点是什么?
6
1、顺序文件的打开与关闭
11.2 顺序文件
(1)打开文件
打开文件的命令是open。
语法格式:
open ”文件名” for 模式 as [#] 文件号 [len=记录长度]
7
1、顺序文件的打开与关闭
说明 :
文件名可以是字符串常量 ,也可以是字符串变量。
模式 :
Output:打开一个文件,将对该文件进行写操作。
Input :打开一个文件,将对该文件进行读操作。
Append :打开一个文件,将对该文件末尾追加记录。
文件号: 文件号是一个1~511之间的整数。
例如:打开D:\sj下aaa文件供写入数据,文件号为#1
Open “D:\sj\aaa” for output as #1
8
1、顺序文件的打开与关闭
11.2 顺序文件
(2)关闭文件
结束各种读写操作后,必须将文件关闭,否则会造成数据丢失。关闭文件的命令是close。
语法格式:
Close [#]文件号,[[#]文件号]……
例如:close #1,#,2,#3
9
1、顺序文件的打开与关闭
11.2 顺序文件
[例题11.1]使用open语句打开文件。
(1)以顺序文件打开E:\VB\VB.txt文件,并从中读取数据。
(2)以顺序文件打开E:\VB\VB3.txt文件进行写操作。
Open” E:\VB\VB.txt” for input as #1
Open” E:\VB\VB3.txt” for ouput as #3
10
1、顺序文件的打开与关闭
11.2 顺序文件
[例题11.2]使用close 语句文件。
(1)关闭E:\VB\VB.txt 文件
close #1
(2)关闭E:\VB\VB3.txt 文件
close #3
11
2、顺序文件的读操作
11.2 顺序文件
Input #语句
语法格式:
input #文件号,变量列表
作用:
将从文件中读出的数据分别赋给指定的变量。
12
2、顺序文件的读操作
11.2 顺序文件
(2)Line input #语句
语法格式:
Line input #文件号,字符串变量
作用:
从文件中读出一行数据,并将读出的数据赋给指定的变量,读出的数据中不包含回车符和换行符。
13
2、顺序文件的读操作
11.2 顺序文件
(3) input 函数
语法格式:
a$=input $(读取的字符数,# 文件号)
作用:
可以读取指定数目的字符。
14
2、顺序文件的读操作
11.2 顺序文件
(4) 与读文件有关的两个函数
lof( ):返回某文件的字节数。
eof( ):检查指针是否到达文件尾。
指针在文件尾时,eof函数为true,否则为false.
15
2、顺序文件的读操作
11.2 顺序文件
[例题11.3]将一个文本文件读入文本框,假定文本框 名称为txet1,文件名为MYFILE.EXT(有三种方法)。
方法1:一行一行读
text1.text=””
open”MYFILE.EXT”for input as #1
do while not eof(1)
line input#1,inputdata
text1.text=text1.text+inputdata+vbcrlf
loop
close #1
16
2、顺序文件的读操作
11.2 顺序文件
[例题11.3]将一个文本文件读入文本框,假定文本框 名称为txet1,文件名为MYFILE.EXT(有三种方法)。
方法2:一次性读
text1.text=””
open”MYFILE.EXT”for input as #1
text1.text=input$(lof(1),1)
close #1
17
2、顺序文件的读操作
11.2 顺序文件
[例题11.3]将一个文本文件读入文本框,假定文本框 名称为txet1,文件名为MYFILE.EXT(有三种方法)。
方法3:一个个字符读
dim inputdata as string*1
text1.text=””
open”MYFILE.EXT”for input as #1
do while not eof(1)
inputdata=input$ (1,#1)
text1.text=text1.text+inputdata
loop
close #1
18
3、顺序文件的写操作
11.2 顺序文件
(1)print # 语句
语法格式:print #文件号,[输出列表]
作用:将处理好的输出列表写入文件中。
[例题11.4]将文本框的内容一次性写入“D:SJ\TEST.DAT”
文件中。
open”D:SJ\TEST.DAT”for output as #1
print #1,text1.text
close #1
19
3、顺序文件的写操作
11.2 顺序文件
(2)write # 语句
语法格式:write #文件号,[输出列表]
作用:以紧凑格式存放的,在数据间插入逗号,并给字符串加上双引号。
[例题11.5]将字符串“One”、“Two”,数值123写入#1文件中。
write #1,”One”,”Two”,123
20
3、顺序文件的写操作
11.2 顺序文件
[例题11.6]保存文本框,假定文本框的名称为Text1,文件名为TEST.DAT。
方法1:把整个文本框的内容一次性地写入文件。
open”TEST.DAT”for ouput as #1
print #1,text1
close #1
21
3、顺序文件的写操作
11.2 顺序文件
[例题11.6]保存文本框,假定文本框的名称为Text1,文件名为TEST.DAT。
方法2:把整个文本框的内容一个字符一个字符地写入文件。
open”TEST.DAT”for ouput as #1
for i=1 to len(text1)
print #1,mid(text1,i,1);
nexti
close #1
22
课堂反馈:将数据1,2,3,...,8写入顺序文件Num.txt中,请将程序补充完整。
private sub from_click( )
dim i as integer
open”Num.txt”for ouput as #1
for i=1 to 8
print #1,i
nexti
close #1
end sub
23
1、随机文件的打开与关闭
11.3 随机文件
(1)打开
语法格式:
open ”文件名” for Random as [#] 文件号 [len=记录长度]
说明 : Random表示打开的是随机文件。可以进行写入和读出操作,但需要指明记录的长度,系统默认长度为128字节 。
24
1、随机文件的打开与关闭
11.3 随机文件
open ”c:\afile.per” for Random As #1
(2)关闭。
语法格式: close # 文件号
[例题11.7]打开随机文件”C:\aFile.per”,且文件号为1。
25
2、随机文件的编辑
11.3 随机文件
(1)读操作
语法格式:Get [#]文件号,[记录号],变量名
作用:从磁盘文件中将一条由记录号指定的记录内容 读入变量中。
说明:记录号是大于1 的整数,表示对第几条记录进行操作,如果 忽略不写,则表示当前记录的下一条记录。
例如 :Get #1,3,t1
该语句可以把#1文件中记录号为3的记录读入到t1变量中。
26
2、随机文件的编辑
11.3 随机文件
(2)写操作
语法格式:Put [#]文件号,[记录号],变量名
作用:将一个记录变量的内容,写入所打开的磁盘文件指定的记录位置。
说明:记录号是大于1 的整数,表示写入第几条记录,,如果 忽略不写,则表示当前记录后插入一条记录。
[例11.8 ] 用上述t1的值替换 #1文件中的第二条记录。
Put #1,3,t1
27
文件的分类;
顺序文件的打开,关闭;
顺序文件的读取;
随机文件的存取。
总结
28
以下程序的功能是:在 D盘temp目录下建立1个名为dat.txt的文件,在文本框中输入字符 ,每次按回车键都 把当前文本框的内容写入文件 dat.txt,并清除文本框中的内容,如果输入“END”,则结束程序。
课后习题
private sub form_click()
open “d:\temp\dat.txt” for output as #1
dim inputdata as string*1
text1.text=””
end sub
29
以下程序的功能是:在 D盘temp目录下建立1个名为dat.txt的文件,在文本框中输入字符 ,每次按回车键都 把当前文本框的内容写入文件 dat.txt,并清除文本框中的内容,如果输入“END”,则结束程序。
课后习题
private sub form_click()
if _____________=13then
if Ucase(text1.text)=_____then
close #1
end
else
write #1,_______
text1.text=””
end if
endif
end sub
keyascii
END
text1.text
$$