《Visual Basic NET程序设计》课件第7章 文件系统_第1页
《Visual Basic NET程序设计》课件第7章 文件系统_第2页
《Visual Basic NET程序设计》课件第7章 文件系统_第3页
《Visual Basic NET程序设计》课件第7章 文件系统_第4页
《Visual Basic NET程序设计》课件第7章 文件系统_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.1文件的概念7.1.1文件文件是存储在外部介质上数据的集合,按名存取。通常,计算机程序将内部数据保存到文件中的过程称为写(输出)文件;将文件数据恢复成内部数据的过程称为读(输入)文件。7.1.2VB.NET文件分类按内容分:程序文件和数据文件;按存储信息的形式分:字符编码文件(如ASCII码文件)和二进制文件;按访问模式分:顺序文件、随机文件和二进制文件。1.顺序文件顺序文件(SequentialFile)中记录的写入、存放和读出顺序都是一致的。在顺序文件中,构成文件的记录不定长,记录与记录之间应有明确的记录分隔符(如逗号,换行符等)。每一个记录包含一个或者多个数据项,由分隔符分隔。例如,下列文本序列:1,"张三";2,"李四";3,"王五";…;100,"lack"2.随机文件随机文件中的记录有固定的大小,记录与记录间无须明确的分隔符。下列记录序列: 0001张三;0002李四;0003王五;...;0100Jack可以构成一个随机文件,每条记录长度为12个字节(数字编号占4个字节,名字占8个字节)。由于随机文件的记录定长,可直接定位记录的开始和结束,如第n记录从文件开始位置+(n-1)*12字节处开始。3.二进制文件任何一个文件都可以以二进制模式访问。二进制文件在访问方式上与随机文件类似,可以看成是记录长度为1个字节的随机文件。7.1.3VB.NET的文件访问存取文件一般包括三个步骤:打开文件、读取文件和关闭文件。7.2顺序文件7.2.1基本操作文件的基本操作包括打开、读写和关闭。要读写文件,必须先打开文件,指定一个系统缓冲区用于缓存读写数据。读写完成后要关闭文件,使系统能将缓冲区内未保存数据写入文件,避免文件损坏。1.打开文件VB.NET使用FileOpen函数打开文件,常用于打开顺序文件的调用格式为:FileOpen(文件号,文件名,打开模式)表7-1文件打开模式例如,下列语句以Output模式打开文件"c:\test_file.txt",意味着打开的目的是为了要输出信息。FileOpen(1,"c:\test_file.txt",OpenMode.Output)文件打开后,可使用1号缓冲区对文件进行读写。2.读写文件(1)写操作顺序文件的写操作有两种输出数据的格式:标准格式和紧凑格式。标准格式以长度为14个字符大小为单位的输出域对齐输出数据。输出域边界限制了数据项的起始位置(第n*14列,n=0,1,2,…),从而区分输出数据项。紧凑格式则用分隔符(逗号)来分隔数据项。例如,输出语句:Print(1,TAB(10),TAB(9),TAB(-2),"ThirdLinen",TAB(),"SecondZone")Write(1,TAB(10),TAB(9),TAB(-2),123,TAB(),"NextColurnn",True)(2)读操作Input函数通常用来读取用Write所写的某个特定类型的数据,即用逗号和回车换行符分隔良好的(字符)数据。DimtAsIntegerInput(1,t)3.关闭文件使用完文件后,应及时将其关闭,避免有用信息丢失。文件关闭函数的格式为:FileClose(文件号[,文件号列表])其中,文件号是要关闭文件所在缓冲区的编号。FileClose函数可以关闭一个打开文件,也可以一次性关闭多个打开文件。例如,语句:FileClose(1,2)7.2.2顺序文件的使用例7.1设计一个能将用户输入信息保存到顺序文件的程序。程序运行界面如图7-3所示。分析:要创建文件,应使用FileOpen函数以OpenMode.Output模式打开文件;要添加数据,应使用FileOpen函数以OpenMode.Append模式打开文件。写入数据项可以使用PrintLine或WriteLine函数。窗体界面设计使用3个LabelBox、3个TextBox、3个GroupBox、1个Button、4个RadioButton、1个StatusStrip(状态工具栏),对StatusStrip添加ToolStripStatusLabel1。程序代码如下:PublicClassForm1DimiAsIntegerPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickIfRadioButton1.Checked=TrueThenFileOpen(1,"d:\test_file.txt",OpenMode.Output)ElseFileOpen(1,"d:\test_file.txt",OpenMode.Append)EndIfButton1.Enabled=FalseButton2.Enabled=TrueToolStripStatusLabel1.Text="在1#缓存区打开文件d:\test_file.txt"i=0EndSubPrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Clicki=i+1IfRadioButton4.Checked=TrueThenWriteLine(1,i,TextBox1.Text,TextBox2.Text,Val(TextBox3.Text))ElsePrintLine(1,i,TextBox1.Text,TextBox2.Text,Val(TextBox3.Text))EndIfButton3.Enabled=TrueToolStripStatusLabel1.Text="第"&i&"条记录写入文件d:\test_file.txt"EndSub

PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickFileClose(1)Button3.Enabled=FalseButton2.Enabled=FalseButton1.Enabled=Truei=0ToolStripStatusLabel1.Text="文件d:\test_file.txt已关闭"EndSub

PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadRadioButton1.Checked=TrueRadioButton3.Checked=TrueButton2.Enabled=FalseButton3.Enabled=FalseToolStripStatusLabel1.Text="就绪"EndSubEndClass例7.2设计一个能够读取例7.1中保存的文件信息的程序。程序运行界面如图7-4所示。程序代码如下:PublicClassForm1DimiAsIntegerPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickFileOpen(1,"d:\test_file.txt",OpenMode.Input)Button1.Enabled=FalseButton2.Enabled=TrueToolStripStatusLabel1.Text="在1#缓存区打开文件d:\test_file.txt"i=0EndSub

PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickDimiAsInteger,nameAsString,sexAsString,ageAsIntegerIfNotEOF(1)=TrueThenInput(1,i)Input(1,name)Input(1,sex)Input(1,age)TextBox1.Text=nameTextBox2.Text=sexTextBox3.Text=ageToolStripStatusLabel1.Text="从文件d:\test_file.txt中读取第"&i&"条记录"ElseToolStripStatusLabel1.Text="文件d:\test_file.txt已经读到了结尾"TextBox1.Text=""TextBox2.Text=""TextBox3.Text=""Button2.Enabled=FalseEndIfButton3.Enabled=True

EndSub

PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickFileClose(1)Button3.Enabled=FalseButton2.Enabled=FalseButton1.Enabled=TrueToolStripStatusLabel1.Text="文件d:\test_file.txt已关闭"EndSub

PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadButton2.Enabled=FalseButton3.Enabled=FalseToolStripStatusLabel1.Text="就绪"EndSubEndClass7.3随机文件与顺序文件相比,随机文件的记录大小是固定的,容易计算出每条记录在文件中的位置。随机文件可以直接读取任何一条记录。1.记录结构随机文件的记录一般用类或Structrue结构定义。例如,要使用与例7.1程序中类似的文件记录,可用如下方法定义记录结构,声明记录变量。StructurePersonalRecord ‘定义一个存储个人信息的结构PersonalRecord<VBFixedstring(12)>DimnameAsString<VBFixedstring(6)>DimsexAsStringDimageAsintegerEndStructureDimpersonAsPersonalRecord ‘用PseronalRecord声明一个变量person,存储个人信息2.打开文件常用于打开随机文件的FileOpen函数调用格式为:FileOpen(文件号,文件名,OpenMode.Random,,,记录长度)例如,下列语句以Random模式打开文件“d:\test_file.dat”,记录长度为Len(person)。FileOpen(1,"d:\test_file.dat",OpenMode.Random,,,Len(person))3.读写文件用于随机文件读写的相关函数(或过程)如表7-5所示,分别用FileGet和FilePut对文件进行读写。例如,要将Basic语言设计者Kemeny的信息写到文件"d:\test_file.dat"中,可使用语句:="JohnG.Kemeny":person.sex="male":pserson.age=33FilePut(1,person,1)将person变量的内容写入文件的第1条记录中。如果不指明记录号,则FilePut语句将数据写入当前记录。例如:FilePut(1,person) '将person变量的内容写入文件的当前记录读取文件的信息,可直接用FileGet语句读取指定记录,读取完成后,文件指针指向下一条记录。例如:FileGet(1,person,1) ‘将第1条记录读到person变量中。MsgBox("BASIC的发明人是"&) ‘将显示读出的部分信息4.关闭文件随机文件也用FileClose关闭。例如,要关闭前面打开的文件“d:\test_file.Dat”,可用语句:FileClose(1)。7.3.2随机文件的使用例7.3设计使用随机文件保存和读取用户输入信息的程序。定义如下结构:StructurePersonRecord<VBFixedString(12)>DimnameAsString<VBFixedString(6)>DimsexAsStringDimageAsIntegerEndStructure然后用PersonRecord声明变量person,用于保存记录信息。DimpersonAsPersonRecord程序代码如下:PublicClassForm1StructurePersonRecord'定义记录结构<VBFixedString(12)>DimnameAsString<VBFixedString(6)>DimsexAsStringDimageAsIntegerEndStructureDimpersonAsPersonRecord'声明保存记录的变量DimisFileOpenedAsBoolean'文件打开标志

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickIfisFileOpenedThenReturnFileOpen(1,"d:\test_file.txt",OpenMode.Random,,,Len(person))ToolStripStatusLabel1.Text="在1#缓存区打开文件d:\test_file.txt,记录数为:"&LOF(1)/Len(person)isFileOpened=TrueEndSubPrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickDimrecordNoAsLongIfNotisFileOpenedThenReturnrecordNo=Val(TextBox4.Text)IfrecordNo>0AndrecordNo<=LOF(1)/Len(person)Or(recordNo=-1AndNotEOF(1))ThenFileGet(1,person,recordNo)TextBox4.Text=recordNoTextBox1.Text=TextBox2.Text=person.sexTextBox3.Text=person.ageToolStripStatusLabel1.Text="读取记录"&recordNoEndIfEndSubPrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickDimrecordNoAsLongIfNotisFileOpenedThenReturnrecordNo=Val(TextBox4.Text)=TextBox1.Textperson.sex=TextBox2.Textperson.age=Val(TextBox3.Text)IfrecordNo<>-1ThenFilePut(1,person)ToolStripStatusLabel1.Text="增加一条记录"EndIfIfrecordNo>0AndrecordNo<=LOF(1)/Len(person)ThenFilePut(1,person,recordNo)ToolStripStatusLabel1.Text="写入记录"&recordNoEndIfEndSubPrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadTextBox4.Text=-1isFileOpened=FalseToolStripStatusLabel1.Text="就绪"EndSub

PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.ClickIfNotisFileOpenedThenReturnFileClose(1)'关闭文件isFileOpened=FalseTextBox1.Text=""TextBox2.Text=""TextBox3.Text=""ToolStripStatusLabel1.Text="就绪"EndSubEndClass7.4VB.NET文件管理VB.NET使用基础类库中的Directory类和File类管理目录和文件。这两个类位于System.IO命名空间,提供了大量用于管理目录和文件的方法。7.4.1目录管理'创建目录d:\test_dirSystem.IO.Directory.CreateDirectory("d:\test_dir")'创建子目录d:\test_dir\test_sub_dirSystem.IO.Directory.CreateDirectory("c:\test_dir\test_sub_dir")例如,下列语句演示了Delete、Exists和Move方法的使用方式。'目录C:\Test_Dir\Test_Sub_Dir是否存在?IfSystem.IO.Directory.Exists("C:\Test_Dir\Test_Sub_Dir")Then'删除子目录C:\Test_Dir\Test_Sub_DirSystem.IO.Directory.Delete("C:\Test_Dir\Test_Sub_Dir")’创建目录"C:\Test_Dir\Test_Sub_Dir"System.IO.Directory.CreateDirectory("C:\Test_Dir\Test_Sub_Dir")‘移动子目录"C:\Test_Sub_Dir"到"C:\Test_Dir\Test_Sub_Dir"System.IO.Directory.Move("C:\Test_Sub_Dir","C:\Test_Dir\Test_Sub_Dir")EndIf7.4.2文件管理下面给出Copy、Move、Exists和Delete方法的使用实例。IfSystem.IO.File.Exists("C:\.test_file.txt")Then '文件是否存在?'移动文件System.IO.File.Move("C:\test_file.txt","C:\test_Dir\test_Sub_Dir\test_file.txt")'复制文件System.IO.File.Copy("C:\test_Dir\test_Sub_Dir\test_file.txt","C:\test_file.txt")System.IO.File.Delete("C:\test_Dir\Test_Sub_Dir\test_file.txt") '删除文件EndIf7.5综合实例7.5.1问题及分析本节将设计一个类似Windows记事本的程序,称为“简易记事本”。程序的基本功能是显示、编辑和保存文本文件。简易记事本只有“文件”和“编辑”两个菜单。“文件”菜单包括新建、打开、保存和退出四个功能;“编辑”菜单则有剪切、复制和粘贴3个功能。7.5.2解决方案1.界面设计简易记事本所需要的控件包括窗体、文本框、打开文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论