版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB.NET程序设计实训教程第9章文件及相关控件9.1文件与流9.2文件流的操作9.3文件处理9.4
实训练习99.1文件与流1.文件文件是一些具有永久存储及特定顺序的字节组成的一个有序的具有名称的集合。VB.NET提供了两种用于文件操作的方式:使用.NET的System.IO模型和使用VisualBasic.NET的运行时函数。2.流其实,在.NET里面,微软用丰富的“流”对象取代了传统的文件操作,而“流”,是一个在Unix里面经常使用的对象,可以把流当作一个通道,程序的的数据可以沿着这个通道“流”到各种数据存储机构(比如:文件,字符串,数组,或者其他形式的流等)。3.文件的访问文件访问主要是对文件的读写操作,读文件是将文件中的数据读入计算机内存,就是向计算机输入数据;写文件将计算机内存中的数据写入文件中。在VB.NET提供了3种文件访问的方法(1)VB传统语句访问文件(2)通过.NET的System.IO模型以流的方式对各种数据文件进行访问(3)通过文件系统对象模型(FSO)访问文件9.2文件流的操作流对象,封装了读写数据源的各种操作,最大的优点就是方便学习。只要学好操作某一个数据源时,就可以把这种技术扩展到其他形形色色的数据源。VB.NET将文件看成是顺序的字节流,文件流是字节序列的抽象概念,将文件视为存储在磁盘上的一系列二进制字节信息。System.IO模型下读写文件时,不是直接操作文件,而是通过文件流的某些方法来实现对文件的读写。System.IO模型的实现包含在System.IO命名空间中,该模型是一个文件操作类库,包含的类可以文件的创建、读写、复制、移动和删除等操作。9.2.1System.IO模型System.IO模型提供了一个面向对象的方法访问文件系统,该模型提供了许多针对文件、文件夹的操作功能,是以流的方式对各种数据进行访问,不仅灵活,而且可以保证编码接口的统一。1.System.IO中的类名称在VB.NET中文件流的访问操作都是通过VB.NET中System.IO来实现,有许多以“File”开头的类名,如表9-1所示。类名称说明Directory;File;FileInfo;FileStream;Path用于创建、移动和删除目录和文件,通过属性获取目录和文件的相关信息BinaryReader;BinaryWriter读写二进制数据MemoryStream访问存储在内存中的数据FileStream与Stream对象配合,完成更多的文件操作StreamWriter;StreamReader读写文本数据StringReader;StringWriter运用字符串缓冲读写文件数据2.System.IO操作的分类System.IO命名空间包含一个便于进行字符串、字符和文件操作的类库,用来创建、复制和删除文件的属性、事件和方法。(1)操作流的类,包括操作文件流、内存流、读写这些流的类(2)操作文件夹的类,包括文件夹创建、移动、删除磁盘信息访问(3)操作文件的类,包括对文件创建、删除、移动、获取文件信息。9.2.2流的种类流是一个抽象类,不能在程序中声明Stream的一个实例。在.NET里由Stream派生出5种具体的流,如表9-2所示。流名称说明FileStream
支持对文件的顺序和随机读写操作MemoryStream
支持对内存缓冲区的顺序和随机读写操作NETworkStream支持对Internet网络资源的顺序和随机读写操作CryptoStream
支持数据的编码和解码BufferedStream支持缓冲式的读写对那些本身不支持的对象9.2.3FileStream类进行本地文件操作的时候,我们可以采用FileSteam类,可以很简单的读写为字节数组(arraysofbytes)。对于简单数据类型的数据的读写,可以采用BinaryReader和BinaryWriter以及StreamReader,StreamWriter类。
BinaryReader,用特定的编码将基元数据类型读作二进制值。BinaryWriter以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。1.最简单就是指定文件路径,语法格式DimfStreamAsFileStream(path,fileMode,fileAccess)参数说明:Path要包含文件的路径以及文件名;fileMode是枚举类型,其成员如表9-3所示;fileAccess是枚举类型,包含的属性有Read(只读)、ReadWrite(读写)、andWrite(写操作)。
成员名称说明Append打开现有文件并查找到文件尾,或创建新文件。Create指定操作系统应创建新文件。如果文件已存在,它将被改写。CreateNew指定操作系统应创建新文件。Open指定操作系统应打开现有文件。OpenOrCreate指定操作系统应打开文件(如果文件存在);否则,应创建新文件。Truncate指定操作系统应打开现有文件。文件一旦打开,就将被截断为为零字节大小。2.使用OpenWrite创建FileStream,语法格式
DimFSAsFileStream=IO.File.OpenWrite("d:\file1.txt")
另外一种方式打开文件可以用OpenFileDialog和SaveFileDialog控件的OpenFile方法。不需要指定任何参数。OpenFileDialog的OpenFile方法以只读方式打开文件,SaveFileDialog的OpenFile方法以读写方式打开文件。(1)OpenFileDialog的OpenFile方法以只读方式打开文件,语法格式DimFSAsFileStream=OpenFileDialog1.OpenFile(2)SaveFileDialog的OpenFile方法以读写方式打开文件,语法格式
DimFSAsFileStream=SaveFileDialog1.OpenFile3.FileStream类的常用方法和属性在创建文件后,需要对文件进行读写等操作,FileStream类的方法如表9-4所示。
成员名称说明Read从流中读取字节块并将该数据写入缓存区中Write从缓存区读取的数据写入该流Seek将该流的读写位置设置为定值Flush清除该流的所有缓存区,将所有缓存区的数据写入设备中Close关闭文件并释放与该文件流相关的任何资源4.【例9-1】创建并关闭流文件举例:创建一个文件流文件,然后关闭这个流对象‘先引入命名空间ImportSystem.IO‘创建一个流文件DimfsasnewSystem.IO.FileStream(“d:\file\lihuafile.txt”,FileMode.OpenOrCreate,FileAccess.ReadWrite)‘关闭这个流对象Fs.Close()9.2.4StreamReader类和StreamWriter类FileStream本身提供了对文件字节格式的读写功能,但它要配合.NET提供的流读写器StreamReader和StreamWriter一起工作。StreamReader用来读任何输入流;FileStream是文件流,可以被读,被写;StreamWriter用来写任何输出流。1.StreamReader类的方法和属性StreamReader类用来读取文件流,其常用的方法和属性如表9-5所示。
成员名称说明Read从输入流中读取数据Close关闭文件并释放与该读取器相关的任何资源2.StreamWriter类的方法和属性StreamWriter类可以写入任何流,其常用的属性和方法如表9-6所示。
成员名称说明WriteLine写入指定的数据,后跟行结束符Flush清除该流的所有缓存区,将所有缓存区的数据写入基础流Close关闭当前的StreamWriterr和基础流3.StreamReader和StreamWriter类的简单应用【例9-2】利用StreamReader和StreamWriter类,简单实现对文件的读取操作先定义一个FileStream,利用StreamReader和StreamWriter类,简单实现对文件的操作,代码如下‘先引入命名空间ImportSystem.IOPrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.Click'实例化一个FileStream对象DimfsAsNewSystem.IO.FileStream("d:\file\lihuafile.txt",FileMode.OpenOrCreate)'定义一个StreamWriteDimswAsNewStreamWriter(fs)'在文件中写入一些数据sw.WriteLine("WelcometoVB.NET")sw.WriteLine("findit,useit,it'suseforyou")sw.WriteLine(23)'清除该流的所有缓存区,将所有缓存区的数据写入基础流sw.Flush()'定义一个StreamReaderDimsrAsNewStreamReader(fs)DimsAsString'设置当前流的位置,流的开始位置(SeekOrigin.Begin)偏移零位sr.BaseStream.Seek(0,SeekOrigin.Begin)'读出数据s=sr.ReadLineMessageBox.Show(s)s=sr.ReadLineMessageBox.Show(s)s=sr.ReadLineMessageBox.Show(s)fs.Close()EndSub9.2.5Directory类Directory类中提供了一系列的用于对文件系统的目录进行操作的静态方法,这些方法可用于一些典型的操作,如:复制、移动、重命名、创建和删除目录。1.Directory类常用的方法也可将Directory类用于获取和设置与目录的创建、访问及写入操作,如表9-7所示
成员名称说明CreateDirectory按路径指定创建目录和子目录Delete按路径指定创建目录和子目录Exists删除目录及其内容GetFileSystemEntries返回指定目录中所有文件和子目录的名称GetLogicalDrive检索计算机的逻辑驱动器的名称2.Directory类的简单应用【例9-3】判断指定的目录是否存在,存在提示,否则创建该目录。'引入System.IO命名空间ImportsSystem.IOPrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.Click'定义一个String变量指定目录DimpathAsStringpath="d:\file"'判断目录是否存在,存在则提示IfDirectory.Exists(path)ThenMessageBox.Show("目录文件已经存在")ExitSubEndIf'不存在,创建一个新的目录Directory.CreateDirectory(path)MessageBox.Show("目录文件已经成功创建")EndSub类对流的操作有三种方法:从流中读取数据;向流中写入数据;在流中实现数据的查询和修改。1.File类中常用的方法VB.NET中具有强大的文件处理功能,在类中常用的方法如表9-8所示。函数名称说明Create创建文件Exists判断文件是否存在Copy拷贝文件CreateText创建或打开文本文件Delete删除文件Move移动文件Open打开文件OpenRead打开现有文件以进行读取OpenText打开现有UTF-8编码文本文件以进行读取OpenWriter打开一个现有文件或创建一个新文件以进行写入2.File类的简单应用【例9-4】实现文件的简单创建和删除,没有进行判断,仅仅是简单应用。'引入System.IO命名空间ImportsSystem.IOPrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.Click'定义目录文件名DimpathAsString="d:\file"Dimpath1AsString=path+"\"+"lihuafile1.txt"Dimpath2AsString=path+"\"+"lihuafile2.txt"'定义一个FileStream类,创建一个新文件DimfsAsFileStream=IO.File.Create(path1)
fs.Close()'运用File.Copy方法,拷贝文件IO.File.Copy(path1,path2)IO.File.Delete(path1)'删除文件MessageBox.Show(path1&"拷贝到"&path2)EndSub为了保持VB.NET与以前VB6对文件操作的兼容性,在VB.NET中保留了使用运行时的I/O函数来执行文件的操作。VB.NET的运行时函数允许三种类型的文件:顺序文件、随机文件和二进制文件。1.顺序访问文件这种文件访问以顺序的、连续块的方式读写文本文件,只能是文本文件2.随机访问文件可以在任何时候读写文件的任何位置,文件必须由同样长度的记录组成3.二进制方式访问文件可以通过直接指定读写的开始位置及读写的长度来读写文件数据9.3文件处理9.3.1顺序文件在VB.NET文件中,其文件处理一般需要三个步骤,首先打开文件,然后进行文件的读写操作,最后关闭文件。一个文件必须打开后才能进行读/写处理,把内存中的数据输出到外部存储设备的操作称为写操作,把文件中的数据传输到内存的操作称为读数据。文件处理后要关闭文件,防止因误操作而丢失文件数据。下面列出一些常用函数。1.FileOpen函数用指定的方式的打开文件使用格式为:
FileOpen(FileNumber,FileName,OpenMode)
FileNumber—为打开文件的编号,它由freefile()获取。
FileName—打开的文件名
OpenMode—打开方式,共有:
OpenMode.append—打开文件并以追加的形式写入,
openMode.input—打开文件用以读取数据。
openMode.output—打开文件并以覆盖的形式写入例如:FileOpen(1,”e:\fileopen.txt”,OpenMode.Input)2.FileClose函数关闭与文件号对应的文件。如果省略文件号,则关闭所有已打开的文件指定的文件。使用格式为:FileClose(FileNumber)FileNumber—为打开文件的编号,它由freefile()获取。例如:FileOpen(1,”e:\fileopen1.txt”,OpenMode.Input)FileOpen(2,”e:\fileopen2.txt”,OpenMode.append)FileClose(1)‘关闭文件e:\fileopen1.txtFileClose()‘关闭所有已打开的文件3.FileGet函数从打开的文件中读取信息使用格式:FileGet(FileNumber,Value[,RecordNumber]])FileNumber-打开文件的编号Value-变量,从文件中读取的内容存入该变量RecordNumber-可选,指定要写的随机文件中的记录数或二进制文件的字节数4.FilePut函数将函数指定的变量写入文件中使用格式:FilePut(FileNumber,Value[,RecordNumber]])FileNumber-打开文件的编号Value-变量,将变量的内容写入文件中RecordNumber-可选,指定要写的随机文件中的记录数或二进制文件的字节数5.Seek函数文件指定的指针通过该函数来实现使用格式:Seek(FileNumber)FileNumber-打开文件的编号6.Input函数从文件中读取数据,把数据赋给变量使用格式:Input((FileNumber,value)FileNumber-打开文件的编号Value-变量,读出数据,赋给该变量Print和PrintLine函数将格式化的文件写入文件中,Print不在行尾包含换行,PrintLine在行尾包含换行。使用格式:Print(FileNumber[,[Spc(n)|Tab(n)[varytable]]])PrintLine(FileNumber[,[Spc(n)|Tab(n)[varytable]]])FileNumber-打开文件的编号Spc(n)|Tab(n)[varytable]]-可选项,Spc(n)表示相邻的数据间隔的空格数,例如:Print(1,28,Spc(8),”VB.NET”,Spc(8),#2/14/2016#,Spc(8),False)该函数把4个表达式的值写入了文件号位1的文件中,两个相邻的数据之间存在8个空格,写入的形式为:28VB.NET2016-2-14FalseWrite和WriteLine函数将文件写入文件中,该两个函数与Print和PrintLine函数的功能基本相同。主要区别是:当把数据项写入文件中,Write和WriteLine函数会自动为字符数据加入双引号,为日期型数据和逻辑性数据加上“#”号,还会在两个写入项之间添加逗号。【例9-5】将4个表达式写入文本文件中FileOpen(1,”d:\file\fileopen1.txt”,OpenMode.Output)Print(1,28,”VB.NET”,#2/14/2016#,False)Write(1,28,”VB.NET”)Write(1,#2/14/2016#,False)FileClose()9.3.2随机文件随机文件中的一行数据称为一条记录,记录的长度是固定的,以方便又记录号来定位,随机文件的读写速度较快,占用的空间较大。对随机文件的操作包括建立、打开、关闭、读写及删除和添加记录等。1.对随机文件的打开和关闭(1)用FileOpen函数打开,其格式如下:FileOpen(文件号,文件名.OpenMode.Random[.访问类型][.共享类型].记录长度)记录长度-各字段长度之和,以字符为单位(2)关闭随机文件用FileClose语句FileClose()2.随机文件的读写操作打开随机文件名,可以进行读写操作,其格式为:FilePut(文件名,变量[,记录号])3.随机文件的简单应用【例9-6】利用随机文件实现对数据的读写
PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimfnAsIntegerfn=FreeFile()'生产文件号'以随机文件的形式打开文件FileOpen(fn,"d:\file\fileopen1.txt",OpenMode.Random,OpenAccess.ReadWrite)'数据写入文件FilePut(fn,"VB.NET")FilePut(fn,"is")FilePut(fn,"verygood")DimstrAsStringstr=""'文件指针的定位Seek(fn,1)'判断文件是否到尾DoWhileNotEOF(fn)FileGet(fn,str)MessageBox.Show(str)Loop'关闭文件FileClose(fn)EndSub【例9-7】文件的综合应用以文本框为编辑器,完成文本文件的打开、保存及文字格式设置操作。除外也可以加上文字内容的编辑处理(复制、剪切、粘贴)、文字格式设置(字体、字号、颜色),如图9-1所示。9.4实训练习9步骤如下:(1)建立项目FileComprehensive(2)创建Form窗口,放置相应的控件,如文本框、命令按钮、OpenFileDialog和SaveFileDialog,如图9-2所示。(3)窗体Form_Load的代码OpenFileDialog1.Filter="textfile(*.txt)|*.txt|allfile(*.*)|*.*"SaveFileDialog1.Filter="textfile(*.txt)|*.txt|allfile(*.*)|*.*"SaveFileDialog1.DefaultExt="txt"(4)按钮“读取文件数据”的代码DimfnAsIntegerDimsAsString=""OpenFileDialog1.FileName=""IfOpenFileDialog1.ShowDialog()=Windows.Forms.DialogResult.OKThenfn=FreeFile()FileOpen(fn,OpenFileDialog1.FileName,OpenMode.Input)DoWhileNotEOF(fn)s=s+LineInput(fn)+vbCrLfLoopFileClose(fn)TextBox1.Text=sMe.Text=OpenFileDialog1.FileName(5)按钮“存入文件数据”的代码DimfnAsIntegerDimsAsString=""SaveFileDialog1.FileName=""IfSaveFileDialog1.ShowDialog=Windows.Forms.DialogResult.OKThenfn=FreeFile()FileOpen(fn,SaveFileDialog1.FileName,OpenMode.Output)Print(fn,TextBox1.Text)FileClose(fn)Me.Text=SaveFileDialog1.FileNameEndIf(6)文件框的颜色]的代码'自定义一个颜色对话框DimColorDialog1AsColorDialog=NewColorDialog()ColorDialog1.ShowDialog()TextBox1.ForeColor=ColorDialog1.Color(7)文件框的字体]的代码'自定义一个字体对话框DimFontDialog1AsFontDialog=NewFontDialog()FontDialog1.ShowDialog()TextBox1.Font=FontDialog1.Font(8)保存并运行项目【例9-8】随机文件的综合应用在窗体上放置文本框,两个Button1(读入文本文件)和Button2(文本文件写出)按钮,实现对随机文件的读写操作,如图9-3所示。步骤如下:(1)建立项目FileRandomGet(2)创建Form窗口,放置相应的控件,如文本框和命令按钮,如图9-4所示。(3)定义一个Student的结构StructureStude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务教案 基础 重点
- 《买菜》中班下学期科学教案
- 期权抵押合同融资租赁合同
- 生物质发电项目招投标申请表
- 大桥建设项目招投标报名
- 河堤地面施工协议
- 仓储物流设施招标承诺书模板
- 教育培训机构薪酬激励
- 燃气调压站员工安全培训
- 工厂蒸汽管道铺设工程合同
- 食品风味研究专题智慧树知到期末考试答案章节答案2024年中国农业大学
- 医疗收费收据样式(医院基层)
- 交安设施施工安全技术交底
- 浙江省小升初数学试卷及答案二
- 仓库安全管理方法
- 神经内科介入治疗护理
- 砌体结构施工实训报告总结
- 20CS03-1一体化预制泵站选用与安装一
- 安全教育不咬手指头
- 教学评一体化
- 湖北省阳新县枪弹山矿区建筑石料用石灰岩矿矿产资源开发利用与生态复绿方案
评论
0/150
提交评论