第13章数据文件Word文档格式.docx

上传人:b****4 文档编号:16489261 上传时间:2022-11-24 格式:DOCX 页数:26 大小:182.43KB
下载 相关 举报
第13章数据文件Word文档格式.docx_第1页
第1页 / 共26页
第13章数据文件Word文档格式.docx_第2页
第2页 / 共26页
第13章数据文件Word文档格式.docx_第3页
第3页 / 共26页
第13章数据文件Word文档格式.docx_第4页
第4页 / 共26页
第13章数据文件Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

第13章数据文件Word文档格式.docx

《第13章数据文件Word文档格式.docx》由会员分享,可在线阅读,更多相关《第13章数据文件Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

第13章数据文件Word文档格式.docx

除了没有数据类型或者记录长度的含义以外,它与随机访问很相似。

二进制访问模式是以字节数来定位数据,在程序中可以按任何方式组织和访问数据,对文件中各字节数据直接进行存取。

13.1.3

文件的基本操作

虽然这3种文件访问的数据类型不同,但应用程序访问它们的步骤却相似:

①使用Open语句打开文件,并为文件指定一个文件号。

对文件进行任何I/O操作之前,都必须经过这步操作。

②从文件中读取部分或全部数据到内存变量中。

③对变量中的数据进行处理。

④将处理后的数据保存回文件中。

⑤使用Close语句关闭文件。

如果没有关闭文件,则会导致文件中部分或全部信息丢失。

13.2顺序文件的基本操作

在程序中对文件的操作,通常按3个步骤进行:

13.2.1打开文件

打开文件用语句open,其格式为:

Open“文件名”[For模式]As[#]文件号[Len=记录长度]

(1)模式

OUTPUT:

写操作

INPUT:

读操作

APPEND:

追加到文件未尾

例如:

"

C:

\VB\SCORE.txt"

FOROUTPUTAS#1

(2)文件号

1~511,可以用FreeFile函数获得下一个可利用的文件号。

(3)记录长度

小于或等于32767的整数,它指定数据缓冲区的大小。

例如,打开C:

\VB\SCORE,供写入数据,指定文件号为#1。

OPEN“C:

\VB\score”FORoutputAS#1

\TEMP\A.TXT”FORInputAS#1

OPEN“C:

\TEMP\B.TXT”FOROutputAS#2

\TEMP\C.TXT”FORAppendAS#1

13.2.2顺序文件的读写操作

1.写操作

向文件写入内容使用Print#语句或Write#语句,在程序中是数据输出。

(1)Print语句

语法格式:

PRINT#<

文件号>

,[<

输出列表>

]

说明:

文件号为以写方式打开文件的文件号;

输出列表为用分号或逗号分隔的变量、常量、空格和定位函数序列。

(2)Write命令

Write#<

Write语句采用紧凑格式。

数据项之间插入“,”,并给字符数据加上双引号。

例3-1Print与Write语句输出数据结果比较。

PrivateSubForm_Click()

DimStrAsString,AnumAsInteger

Open"

D:

\Myfile.dat"

ForoutputAs#1

Str="

ABCDEFG"

Anum=12345

Print#1,Str,Anum

Write#1,Str,Anum

Close#1

EndSub

例13-2编程把一个文本框中的内容,以文件形式存入磁盘。

假定文本框的名称为Mytxt,文件名为Myfile.dat。

方法1:

把整个文本框的内容一次性地写入文件。

PrivateSubCommand1_Click()

c:

ForOutputAs#1

Print#1,mytxt.Text

Close#1

方法2:

把整个文本框的内容一个字符一个字符地写入文件。

PrivateSubCommand2_Click()

Myfile.dat"

Fori=1ToLen(mytxt.Text)

Print#1,Mid(mytxt.Text,i,1);

Nexti

2.顺序文件读操作

从现存文件中向内存读入数据,应以Input方式打开该文件。

然后使用Input#语句、LineInput#语句和Input()函数读入到程序变量中。

使用格式如下:

INPUT#文件号,变量列表

把读出的每个数据项分别存放到所对应的变量。

LINEINPUT#文件号,字符串变量

读一行到变量中,主要用来读取文本文件。

INPUT$(读取字符数,#文件号)

读取指定的数量的字符,作为函数的返回值。

例13-3把datain.txt的文本文件中的数据按5行5列的格式显示在窗体上。

准备文件的程序:

OptionBase1

ConstN=5

ConstM=5

Dimmat(M,N)

Dimi,j

d:

\datain.dat"

Fori=1ToN

Forj=1ToN

mat(i,j)=InputBox("

请输入数据"

Print#1,mat(i,j);

;

Nextj

Print#1,Chr(13)

Nexti

Print

读出数据的程序

ForInputAs#1

Input#1,mat(i,j)

Print"

初始矩阵为:

"

PrintTab(5*j);

mat(i,j);

左上——右下对角线上元素为:

PrintTab(5*i);

mat(i,i);

例13-4读取文本文件到文本框。

DiminputdataAsString*1

PrivateSubCommand1_Click()

Text1.Text="

\myfile1.txt"

DoWhileNotEOF

(1)

LineInput#1,inputdata

Text1.Text=Text1.Text+inputdata+vbCrLf

Loop

DimfilelengthAsLong

\myfile2.txt"

Text1.Text=Input(140,#1)

PrivateSubCommand3_Click()

\myfile3.txt"

inputdata=Input(1,#1)

Text1.Text=Text1.Text+inputdata

13.2.3关闭文件——Close语句

Close[文件号列表]

其中:

文件号列表为可选项,如:

#1,#2,#3,如果省略,则将关闭Open语句打开的所有活动文件。

Close#1,#2,#3

Close

13.2.4与读文件操作有关的几个函数

(1)Lof函数

LOF函数将返回某文件的字节数。

例如,LOF

(1)返回#1文件的长度,如果返回0值,则表示该文件是一个空文件。

(2)Loc函数

Loc函数将返回在一个打开文件中读写的记录号;

对于二进制文件,它将返回最近读写的一个字节的位置。

(3)Eof函数

Eof函数将返回一个表示文件指针是否到达文件末尾的标志。

如果到了文件末尾,Eof函数返回TRUE(-1),否则返回FALSE(0)。

语法结构:

DoWhileNotEof(文件号)

语句

Loop

(4)FileLen函数

此函数返回指定文件的文件长度。

调用格式为:

FileLen(文件名)

(5)FreeFile[(范围)]

此函数获得尚未被占用的文件号中的第一个,参数可以是0或1。

0:

1——255;

1:

256——511

例13-5某商店商品数据。

\goods.txt"

ForAppendAs#1

Print#1,Text1.Text,Text2.Text,Text3.Text,Text4.Text,Text5.Text

msg=MsgBox("

保存完毕,继续输入商品信息吗?

vbYesNo+vbQuestion)

Ifmsg=6Then

Text2.Text="

Text3.Text="

Text4.Text="

Text5.Text="

EndIf

Text7.Text="

LineInput#1,x

Text7.Text=Text7.Text+x+Chr(13)+Chr(10)

Close

13.3随机文件的操作

在文件中以顺序文件方式进行存取数据很方便也很常用,但是当需要大量查找或修改文件中的数据时会很困难,而这时采用随机文件方式存取数据就显得比较方便。

随机文件的每一个数据项都有相同的长度,它的数据项通常称做记录。

随机文件是以记录为单位的,每条记录都被赋予了记录号以便查找。

应用程序可以根据记录号直接读取随机文件中的任意记录,而无须由前至后逐个读取记录。

对随机文件的存取是以记录为单位进行的,每个记录包括一个或多个字段。

具有一个字段的记录对应于任一标准类型,比如整数或定长字符串。

具有多个字段的记录对应于用户自定义类型。

13.3.1打开(建立)文件

1、声明记录类型变量

在打开一个文件进行随机访问之前,应定义一个类型,该类型对应于该文件包含或将包含的记录。

语法格式为:

[Private|Public]Type自定义类型名

元素名Astype

[元素名Astype]

EndType

例如,声明一个学生自定义类型。

TypeStudent

NumberAsString2(学号,宽度为2字节)

NameAsString8(姓名,宽度为8字节)

ScoreAsInteger(成绩,宽度为2字节)

EndType

在定义与记录对应的类型以后,应接着声明程序需要的任何其他变量,用来处理作为随机访问而打开的文件。

如:

Publicstudent1,student2Asstudent(定义记录变量)

PublicstnumeAsInteger(定义存放当前记录号的变量)

PublicLastRecordAsLong(存放最后一条记录的编号)

13.3.2随机文件的读写操作

1.打开文件

格式:

文件名"

ForRandomAs#文件号[Len=记录长度]

2.读操作

Get[#]文件号,[记录号],变量名

功能:

将一个已打开的磁盘文件的一条记录的内容读入一个变量之中。

忽略记录号,则读出当前记录后的那一条记录。

13.3.3随机文件的增、删、改(写操作)

写操作的格式为:

Put[#]文件号,[记录号],变量名

功能是将一个变量的数据写入磁盘文件中,将一个记录变量的内容写到指定的记录位置处。

忽略记录号,则表示在当前记录后的位置插入一条记录。

1.添加记录

在随机文件里添回记录,实际上是在文件尾增加一条记录。

用下面的方法可以找到随机文件的记录数:

记录数LOF(文件号)/len(记录型变量)

如果一个文件的记录数是num,则用下面的语句可以增加一条记录:

num=num+1

put#2,num,x

2.删除记录

要删除一个记录的所有字段可以通过删除记录实现,但该记录仍然在文件中存在,所以一般是把剩余记录复制,之后删除文件。

例13-5a创建一个随机文件,然后读出其中内容,显示在文本框中:

在窗体中创建一个文本框text1,两个命令按钮command1和command2,点击command1(写入文件)时创建文件,点击command2(读出文件)时把文件中的数据读出来,显示在文本框中。

下面是程序代码:

自定义数据类型(记录类型,在窗体的通用代码段中声明)

PrivateTypeRecord

IDAsInteger

NameAsString*20

EndType

创建文件的代码,Command1的单击事件

DimMyRecordAsRecord

Open"

TESTFILE"

ForRandomAs#1Len=Len(MyRecord)

Forrecordnumber=1To5

MyRecord.ID=recordnumber

MyRecord.Name="

MyName"

&

recordnumber

Put#1,recordnumber,MyRecord

Nextrecordnumber

读出文件的代码(Command2的单击事件)

DimMyRecordAsRecord

WhileNotEOF

(1)

Get#1,,MyRecord

Text1.Text=Text1.Text&

Chr(10)&

Chr(13)&

MyRecord.ID&

MyRecord.Name

Wend

例13-6设计一个简单教师信息管理程序,使用随机文件存储教师信息。

PrivateTypeteacher

teachNoAsString*2

teachnameAsString*8

teachsexAsString*2

teachageAsString*2

teachzhcAsString*8

teachxlAsString*10

DimteachinfoAsteacher

DimlastrecAsInteger

\info.txt"

ForRandomAs#1Len=Len(teachinfo)

lastrec=LOF

(1)/Len(teachinfo)

Withteachinfo

.teachNo=Text1.Text

.teachname=Text2.Text

.teachsex=Text3.Text

.teachage=Text4.Text

.teachzhc=Text5.Text

.teachxl=Text6.Text

EndWith

Put#1,lastrec+1,teachinfo

i=InputBox("

请输入查询的记录号"

Ifi<

0Ori>

lastrecThen

MsgBox"

请输入1到"

lastrec&

之间的数"

vbOKOnly+vbInformation

Else

Get#1,i,teachinfo

Text1.Text=teachinfo.teachNo

Text2.Text=teachinfo.teachname

Text3.Text=teachinfo.teachsex

Text4.Text=teachinfo.teachage

Text6.Text=teachinfo.teachzhc

Text6.Text=teachinfo.teachxl

End

13.4二进制文件

二进制文件是一个字节流,文件系统并不解释各字节的意义,解释工作由具体的应用程序完成。

以二进制方式访问文件有下述特点:

●可以直接访问文件中的所有数据。

●由应用程序根据需要解释数据的意义。

●访问文件的语句不更改原始数据的所有内容。

二进制文件每一次读写是以字节为单位对数据进行访问操作的,它允许用户读写或修改文件中的任何字节信息。

当把二进制数据写入文件中时,使用Byte数据类型的数组,而不是String变量。

String被认为包含的是字符,而二进制型数据可能无法正确地存储在String变量中。

当要保持文件的尺寸尽量小时,应使用二进制文件。

13.4.1二进制文件的打开

ForBinaryAs#文件号

13.4.2二进制文件的读写操作

1.写操作

Put[#]文件号,[位置],变量名

写入长度等于变量长度的数据。

2.二进制文件的读操作

GET[#]文件号,[位置],变量名

从指定位置开始读出长度等于变量长度的数据存入变量中,数据读出后移动变量长度位置,如果忽略位置,则表示从文件指针所指的位置开始读出数据,数据读出后移动变量长度位置。

例13-7从位置800起写一个字符串“5678”,从位置1200起写一个字符串“VisualBasic程序设计方法”。

FileNumber=FreeFile

\rest.dat"

ForBinaryAs#FileNumber‘#可以没有

const1="

5678"

const2="

VisualBasic程序设计方法"

Put#FileNumber,800,const1

Put#FileNumber,1200,const2

Close#FileNumber

例13-7a文件复制

DimcharAsByte

DimFileNum1,FileNum2AsInteger

FileNum1=FreeFile

\rest.DAT"

ForBinaryAs#FileNum1

'

打开源文件

FileNum2=FreeFile

\rest.BAK"

ForBinaryAs#FileNum2

打开目标文件

DoWhileNotEOF(FileNum1)

Get#1,,char'

从源文件读出一个字节

Put#2,,char'

将一个字节写入目标文件

Close#FileNum1

Close#FileNum2

13.4.3Seek函数与Seek语句

1.函数

Seek(filenumber)——返回当前文件指针的位置。

必要的filenumber参数是一个包含有效文件号的Integer。

说明

Seek函数返回介于1和2,147,483,647(相当于2^31 

– 

1)之间的值。

2.语句

seek(文件号,recnumber).

把文件指针定位到recnumber处。

13.5文件操作语句

1.ChDir语句

格式:

ChDirpath

功能:

改变当前目录。

例如:

ChDir"

\TMP

2.ChDrive语句

ChDrivedrive

改变当前驱动器

说明:

如果drive为“

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1