VB第8章文件操作课件(PPT 72页)_第1页
VB第8章文件操作课件(PPT 72页)_第2页
VB第8章文件操作课件(PPT 72页)_第3页
VB第8章文件操作课件(PPT 72页)_第4页
VB第8章文件操作课件(PPT 72页)_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章 文 件 操 作8.1 文件IO流模型8.2 文件夹和文件操作8.3 文件读写操作第1页,共72页。8.1 文件IO流模型8.1.1 System.IO名称空间的资源System.IO模型中的资源由System.IO名称空间提供。该名称空间含有对数据流和文件进行同步或异步读写的类、结构和枚举类型,表8.1、表8.2、表8.3分别列出了System.IO名称空间提供的部分常用的类、结构和枚举类型。第2页,共72页。8.1.2 System.IO名称空间的功能System.IO名称空间提供如下功能(括号中是提供相应功能的类):(1)建立、删除、管理文件和文件夹(File和Directory)

2、。(2)监控文件和文件夹的访问操作(FileSystemWatcher)。(3)对流进行单字节字符或字节块的读/写操作(SystemReader和SystemWriter)。(4)对流进行多字节字符的读/写操作(SystemReader和SystemWriter)。(5)对流进行字符的读/写操作(SystemReader和SystemWriter)。(6)对字符串进行字符的读/写操作,并允许把字符串作为字符流处理(StringReader和StringWriter)。(7)从一个流中读取数据类型和对象,或将数据类型和对象写入流中(BinaryReader和BinaryWriter)。第3页,共

3、72页。8.1.2 System.IO名称空间的功能(8)文件的随机访问(FileStream)。(9)系统性能优化(MemoryStream和BufferedStream)。(10)枚举文件或文件夹的属性(FileAccess、FileMode、FileShare、FileAttributes、DirectoryAttributes)。(11)监控文件或文件夹可能的改变(WatcherChangeTypes)。(12)枚举文件或文件夹可能的改变(ChangedFilters)。(13)指定监控的文件或文件夹(WatcherTarget)。(14)指定文件的相对位置(SeekOrigin)。第

4、4页,共72页。8.2 文件夹和文件操作8.2.1 文件夹操作对文件夹操作主要利用Directory和DirectoryInfo两个类来实现,它们都是System.IO名称空间的成员,因此在使用这两个类之前,需要先引入System.IO名称空间,引入的语句如下:Imports System.IO 引入System.IO名称空间。1Directory类1)CreateDirectory方法CreateDirectory方法的功能是建立一个新的文件夹,同时返回一个包括新建文件夹信息的DirectoryInfo对象(DirectoryInfo对象在本节后面介绍),调用的语法格式如下:Director

5、y.CreateDirectory( path )例如,在C盘根文件夹中创建一个名为temp的子文件夹,方法如下:Directory.CreateDirectory(C:temp)CreateDirectory方法还可以一次建立多级文件夹,示例如下:Directory.CreateDirectory(C:dir1dir2dir3)第5页,共72页。8.2.1 文件夹操作2)Delete方法Delete方法的功能是删除指定文件夹及其中的所有文件和子文件夹,调用的语法格式如下:Directory.Delete( path , force)例如,删除C盘根文件夹中的名为temp的空文件夹,方法如下:

6、Directory.Delete(C:temp )若temp文件夹中没有任何文件或子文件夹,即可成功删除,否则将产生异常。如要删除含有子文件夹的文件夹,应使用带force参数的方法,示例如下:Directory.Delete(C: temp , True )第6页,共72页。8.2.1 文件夹操作3)Exists方法Exists方法的功能是判断指定的文件夹是否存在,若存在则返回一个逻辑值True;否则返回False。调用的语法格式如下:Directory.Exists( path )如果指定的文件夹不存在,Directory类的很多方法会失败,因此在做文件夹操作前,可以先用Exists方法确定

7、文件夹是否存在,示例如下:If Directory.Exists(C:temp )then Directory.Delete(C: temp , True )第7页,共72页。8.2.1 文件夹操作4)Move方法Move方法的功能是移动指定的整个文件夹到同一个磁盘中的另外一个位置。Move方法具有改名功能,即将源文件夹移动到目标文件夹指定的位置,但不是移动到目标文件夹中,而是将源文件夹名改为目标文件夹名。调用它的语法格式如下:Directory.Move( source , destination )例如,将C盘根文件夹中名为temp的子文件夹移动到“C:”中,并改名为dir1,方法如下:D

8、irectory.Move(C:temp , C:dir1 )第8页,共72页。8.2.1 文件夹操作5)GetLogicalDrives方法GetLogicalDrives方法的功能是返回一个字符串数组,其中包括当前计算机中所有逻辑驱动器名,每个驱动器名是形如“C:”的字符串。调用的语法格式如下:Directory.GetLogicalDrives()例如,下面示例获得本机所有逻辑驱动器的名字,将其存放到字符串数组myDrv中,并将数组中所有元素放到一个组合框ComboBox1中:Dim myDrv() , x As String myDrv = Directory.GetLogicalDr

9、ives()For Each x In myDrvComboBox1.Items.Add(x)Next x第9页,共72页。8.2.1 文件夹操作6)GetDirectories方法GetDirectories方法的功能是返回一个字符串数组,其中包括指定文件夹的所有子文件夹的完整路径名,不包括子文件夹中的子文件夹名。调用的语法格式如下:Directory.GetDirectories( path , pattern)例如,下面示例获得C盘dir1文件夹的所有子文件夹的名字,将其存放到字符串数组myDrv中:Dim myDrv() As String myDrv = Directory.GetD

10、irectories(C:dir1)GetDirectories方法还可以使用通配符,获得符合条件的子文件夹名。例如,要获得C:WinNT下所有名字中包含“system”的子文件夹名,使用下面的语句:Dim myDrv() As String myDrv = Directory.GetDirectories(C:WinNT , *system*)第10页,共72页。8.2.1 文件夹操作7)GetFiles方法GetFiles方法的功能是返回一个字符串数组,其中包括指定文件夹的所有文件的完整路径名,但不包括子文件夹中的文件名。调用的语法格式如下:Directory.GetFiles( path

11、 , pattern)例如,下面示例获得C盘dir1文件夹中的所有文件的名字,将其存放到字符串数组myFiles中:Dim myFiles() As String myFiles = Directory.GetFiles(C:dir1)GetFiles方法还可以使用通配符,获得符合条件的文件名。例如,要获得C:WinNT下所有扩展名为ini的文件名,使用下面的语句:Dim myFiles () As String myFiles = Directory.GetFiles(C: WinNT , *.ini )第11页,共72页。8.2.1 文件夹操作8)GetFileSystemEntries方

12、法GetFileSystemEntries方法的功能是返回一个字符串数组,其中包括指定文件夹的所有子文件夹和文件的完整路径名,但不包括子文件夹中的文件夹和文件名。该方法实际是GetDirectories和GetFiles方法返回的数组的总和。调用的语法格式如下:Directory.GetFileSystemEntries( path , pattern)例如,下面示例获得C盘dir1文件夹中所有文件夹和文件的名字,将其存放到字符串数组myFiles中:Dim myFiles() As String myFiles = Directory.GetFileSystemEntries( C:dir1

13、 )第12页,共72页。8.2.1 文件夹操作GetFileSystemEntries方法也可以使用通配符,获得符合条件的文件夹和文件名。例如,要获得C:WinNT下所有包含“system”的文件夹和文件名,使用下面的语句:Dim myFiles () As String myFiles = Directory.GetFileSystemEntries (C WinNT , *system*)若要列举C:WinNT下所有的文件夹和文件名,可以使用下面的语句:Dim myFiles () As String For Each myFiles In Directory.GetFileSystemE

14、ntries ( C: WinNT )Console.WriteLine(myFiles) 在输出窗口显示文件夹或文件名。Next第13页,共72页。8.2.1 文件夹操作除了前面介绍的方法,Directory对象还有其他的一些方法,见表8.4,读者可查阅资料或在线帮助,了解它们的功能和用法。第14页,共72页。8.2.1 文件夹操作2DirectoryInfo类创建DirectoryInfo对象的一个实例是通过调用它的构造函数来实现的,语法格式如下:Dim 对象名As New DirectoryInfo ( path )例如,下面语句创建了一个关于C盘根文件夹的DirectoryInfo对象

15、:Dim di As New DirectoryInfo(C: ) 第15页,共72页。8.2.1 文件夹操作1)CreateSubDirectory方法CreateSubDirectory方法的功能是在当前实例所指定的文件夹下建立一个新文件夹,同时返回一个DirectoryInfo对象来代表新子文件夹,调用的语法格式如下:对象名.CreateSubDirectory( path )例如,在C盘根文件夹中创建一个名为temp的子文件夹,示例如下:Dim di As New DirectoryInfo(C: )Di.CreateSubDirectory(temp )CreateSubDirect

16、ory方法还可以一次建立多级文件夹,示例如下:Dim di As New DirectoryInfo(C: )Di.CreateSubDirectory( dir1dir2dir3 )第16页,共72页。8.2.1 文件夹操作2)GetFileSystemInfos方法GetFileSystemInfos方法的功能是返回一个FileSystemInfo对象数组,数组中的每个元素都是当前实例所表示的文件夹中的文件和子文件夹。调用的语法格式如下:对象名.GetFileSystemInfos(pattern)例如,获取C盘根文件夹中所有文件和子文件夹对象,示例如下:Dim di As New Dir

17、ectoryInfo( C: )Dim itemsInfo() As FileSystemInfoItemsInfo = di.GetFileSystemInfos()GetFileSystemInfos方法还可以使用通配符,获得符合条件的对象。例如,要获得C:WinNT下所有包含“system”的文件夹和文件对象,使用下面的语句:Dim di As New DirectoryInfo( C:WinNT )Dim itemsInfo() As FileSystemInfoItemsInfo = di.GetFileSystemInfos( *system* )第17页,共72页。8.2.1 文

18、件夹操作FileSystemInfo对象的常用属性见表8.5。第18页,共72页。8.2.1 文件夹操作如果要区分是文件还是文件夹,可以判断FileSystemInfo对象的Attributes属性是否为文件夹(即是否等于FileAttribute枚举的Directory值),是即为文件夹,否则就是文件。代码如下: Dim di As New DirectoryInfo( C: )Dim i As IntegerDim itemsInfo() As FileSystemInfoitemsInfo = di.GetFileSystemInfos( *system* )i = 1If itemsI

19、nfo(i).Attributes And FileAttributes.Directory Then 是文件夹Else 是文件。End If第19页,共72页。8.2.2 文件操作1File类File类提供操作文件的方法,包括复制、移动、打开、关闭文件等方法。File类有些方法的使用与Directory类相同,表8.6列出了相同的方法。第20页,共72页。8.2.2 文件操作1)Create方法Create方法的功能是建立并打开一个新文件,同时返回指向该文件的Stream流对象。调用Create方法的语法格式如下:File.Create( path , bufferSize)例如,在C盘根文

20、件夹中创建一个名为myfile.dat的文件,返回一个名为ss的Stream流对象,方法如下:dim ss As Streamss = File.Create( C:myfile.dat )Create方法还可以在创建文件的同时指定文件的缓冲区大小。例如,在C盘根文件夹中创建一个名为myfile.dat的文件,并指定该文件的缓冲区为4096字节,示例如下:dim ss As Streamss = File.Create(C:myfile.dat , 4096)第21页,共72页。8.2.2 文件操作在有些情况下,用File类的Create方法创建文件时会发生异常,表8.7列出了各种可能导致异常

21、的类型。第22页,共72页。8.2.2 文件操作2)CreateText方法CreateText方法类似于Create方法,它的功能是建立并打开一个新文本文件,同时返回指向该文件的StreamWriter流对象。StreamWriter对象类似于Stream对象,但它只能用于文本文件的读/写操作,而Stream对象可以用于文本文件和二进制文件的读/写操作。调用CreateText方法的语法格式如下:File.CreateText( path )例如,在C盘根文件夹中创建一个名为myfile.txt的文本文件,并返回一个名为sw的StreamWriter流对象,方法如下:dim sw As St

22、reamWritersw = File.CreateText( C:myfile.txt )第23页,共72页。8.2.2 文件操作3)Copy方法Copy方法的功能是复制一个文件到新的位置。调用它的语法格式如下:File.Copy( source , destination , overwrite)例如,将C盘根文件夹中名为myfile.txt的文件复制到D:dir1中,并更名为myfile_bak.txt。若目标文件已存在,则覆盖目标文件,方法如下:File.Copy( C:myfile.txt , D:dir1myfile_bak.txt , True)第24页,共72页。8.2.2 文

23、件操作4)Move方法Move方法的功能是将指定的文件移动到新的位置,可以使用它来给文件改名。另外它允许在不同的磁盘上移动文件,这与Directory类的Move 方法不同。调用它的语法格式如下:File.Move( source , destination)例如,将C盘根文件夹中名为myfile.txt的文件移动到D:dir1中,并更名为myfile_new.txt,方法如下:File.Move( C:myfile.txt , D:dir1myfile_new.txt )第25页,共72页。8.2.2 文件操作5)Delete方法Delete方法的功能是删除指定的文件,若文件被打开,将产生异

24、常。调用它的语法格式如下:File.Delete( path)例如,删除C盘根文件夹中名为myfile.txt的文件,方法如下:File.Delete( C:myfile.txt )第26页,共72页。8.2.2 文件操作6)GetAttributes方法GetAttributes方法的功能是获得指定文件的属性,该方法返回一个FileAttributes对象,该对象包含文件的所有属性,表8.8列出了文件的各种属性。调用GetAttributes方法的语法格式如下:File.GetAttributes( path)第27页,共72页。8.2.2 文件操作7)Open方法Open方法的功能是打开一

25、个已经存在的文件,并返回一个指向该文件的Stream对象。调用它的语法格式如下:File.Open( path , FileMode , AccessMode , ShareMode)其中:(1)path,String类型,代表要打开文件的完整路径,绝对路径和相对路径均可。(2)FileMode,可选项,枚举类型,指定文件的打开方式,取值见表8.9。第28页,共72页。8.2.2 文件操作(3)AccessMode,可选项,枚举类型,指定文件的访问权限,取值见表8.10。(4)ShareMode,可选项,枚举类型,指定文件的共享方式,取值见表8.11。第29页,共72页。8.2.2 文件操作例

26、如,以只读方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.Open( “C:myfile.txt” , FileMode.Open , FileAccess.Read )上面的语句要求文件必须存在,若文件不存在,要求能创建该文件并以读/写方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.Open( C:myfile.txt , FileMode.OpenOrCreate , FileAccess.ReadWrite )第3

27、0页,共72页。8.2.2 文件操作8)OpenRead方法OpenRead方法的功能是以读方式打开一个已经存在的文件,并返回一个指向该文件的Stream对象。若文件不存在或被打开,将产生异常。调用它的语法格式如下:File.OpenRead( path)OpenRead方法等价于用Open方法的Read访问权限方式打开一个已经存在的文件。例如,以读方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.OpenRead(C:myfile.txt )第31页,共72页。8.2.2 文件操作9)OpenWrite方法

28、OpenWrite方法的功能是以写方式打开一个已经存在的文件,并返回一个指向该文件的Stream对象。若文件不存在或被打开,将产生异常。调用它的语法格式如下:File.OpenWrite( path)OpenWrite方法等价于用Open方法的Write访问权限方式打开一个已经存在的文件。例如,以写方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dim fstream As Streamfstream = File.OpenWrite(C:myfile.txt )第32页,共72页。8.2.2 文件操作10)AppendText方法AppendText方法的功能是以追加方式打开

29、一个文本文件,可以在这个文件后追加文本,并返回一个指向该文件的StreamWriter对象。若文件不存在,将建立一个新文件并打开。调用它的语法格式如下:File.AppendText( path)例如,以追加方式打开C盘根文件夹中名为myfile.txt的文本文件,方法如下:dim fsw As StreamWriterfsw = File.AppendText(C:myfile.txt )第33页,共72页。8.2.2 文件操作11)OpenText方法OpenText方法的功能是以读方式打开一个已经存在的文本文件,并返回一个指向该文件的StreamReader对象。若文件不存在,将产生异常

30、。调用它的语法格式如下:File.OpenText( path)例如,以读方式打开C盘根文件夹中名为myfile.txt的文本文件,方法如下:dim fsr As StreamReaderfsr = File.OpenText(C:myfile.txt )第34页,共72页。8.2.2 文件操作2FileInfo类创建FileInfo对象的一个实例是通过调用它的构造函数来实现的,其语法格式如下:Dim 对象名As New FileInfo ( path )例如,下面语句创建了一个关于C盘根文件夹中myFile.txt文件的FileInfo对象:Dim fi As New FileInfo(C:

31、myFile.txt)1)Length属性Length属性返回以字节为单位的文件大小,返回结果为Long类型。File类没有提供类似的属性或方法。2)CreationTime、LastAccessTime、LastWriteTime属性CreationTime属性返回文件建立的时间,LastAccessTime属性返回文件最后一次访问的时间,LastWriteTime属性返回文件最后一次修改的时间。第35页,共72页。8.2.2 文件操作3)Name、FullName、Extension属性Name属性返回文件名,FullName属性返回完整文件名(包括全路径),Extension属性返回文件

32、的扩展名,3个属性值都是String类型。4)CopyTo和MoveTo方法这两个方法的功能分别是复制和移动当前FileInfo实例所代表的文件,类似于File类的Copy和Move方法。CopyTo方法会返回一个FileInfo对象,代表目标文件。调用的语法格式如下:FileInfo对象名.CopyTo( path , force)FileInfo对象名.MoveTo( path )第36页,共72页。8.2.2 文件操作5)Directory方法Directory方法返回一个代表文件父目录的DirectoryInfo对象。6)DirectoryName方法DirectoryName方法返回

33、文件父目录的名字字符串。第37页,共72页。8.2.3 文件管理控件VB.NET提供了DriveListBox、DirListBox和FileListBox三个控件,分别用于对驱动器、文件夹和文件的操作。这3个控件并不在标准的控件工具箱中,使用时需要先添加到工具箱中,在工具箱上单击鼠标右键,在弹出的菜单上选择【选择项】,打开如图8.1所示。第38页,共72页。8.2.3 文件管理控件1DriveListBox控件DriveListBox控件主要用于磁盘驱动器的操作,使用该控件可以进行驱动器的切换和选择。DriveListBox控件的常用属性及事件如表8.12所示。第39页,共72页。8.2.3

34、 文件管理控件2DirListBox控件DirListBox控件主要用于显示文件夹列表,它可以对所选择的文件夹进行操作。比如,选择路径和设置当前文件夹。DirListBox控件的常用属性及事件如表8.13所示。第40页,共72页。8.2.3 文件管理控件3FileListBox控件FileListBox控件主要用于显示文件列表,使用该控件可以对所选择的文件进行操作。FileListBox控件的常用属性及事件如表8.14所示。第41页,共72页。8.2.4 应用示例【例8.1】 利用DriveListBox、DirListBox、FileListBox这3种控件,使驱动器列表框、文件夹列表框和文

35、件列表框保持联动,并能创建、删除、移动文件和文件夹。1界面设计设置一个驱动器列表框(DriveListBox)、一个文件夹列表框(DirListBox)、一个文件列表框(FileListBox)、2个GroupBox和多个标签(Label)、文本框及命令按钮(Button)。表8.15列出了其主要对象及属性。第42页,共72页。8.2.4 应用示例第43页,共72页。8.2.4 应用示例2程序代码设计为了使用File和Directory类所提供的方法,在模块中要先引入System.IO名称空间。 引入名称空间System.IOImports System.IO要使驱动器列表框、文件夹列表框和文

36、件列表框保持联动,需分别编写DriveListBox1和DirListBox1的SelectedIndexChanged事件代码,相关程序如下:Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged DirListBox1.Path = DriveListBox1.DriveEnd SubPrivate Sub DirListBox1_SelectedI

37、ndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DirListBox1.SelectedIndexChanged FileListBox1.Path = DirListBox1.PathEnd Sub第44页,共72页。8.2.4 应用示例要实现创建、删除、移动文件夹操作,需分别编写相应按钮的单击事件代码。创建文件夹程序:Private Sub btnNewDir_Click(ByVal sender As System.Object, ByVal e As System.Event

38、Args) Handles btnNewDir.Click Dim spath As String spath = DirListBox1.Path If txtNewDirName.Text = Or spath = Then MsgBox(请输入要新建的文件夹名!) Else Directory.CreateDirectory(spath & & txtNewDirName.Text) End IfEnd Sub第45页,共72页。8.2.4 应用示例移动文件夹程序。删除文件夹程序:Private Sub btnDelDir_Click(ByVal sender As System.Obj

39、ect, ByVal e As System.EventArgs) Handles btnDelDir.Click Dim spath As String Dim flg As MsgBoxResult spath = DirListBox1.Path flg = MsgBox(确实要删除 & spath & 文件夹吗?, MsgBoxStyle.YesNo) If flg = MsgBoxResult.Yes Then Directory.Delete(spath) End IfEnd Sub第46页,共72页。8.2.4 应用示例对文件进行创建、删除、复制、移动操作,需分别编写相应按钮的单

40、击事件代码。创建文件程序:Private Sub btnNewFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewFile.Click Dim spath As String Dim ss As Stream spath = DirListBox1.Path If txtNewFileName.Text = Or spath = Then MsgBox(请输入要新建的文件名!) Else ss = File.Create(spath & & txtNewFileName.Tex

41、t) ss.Close() End IfEnd Sub第47页,共72页。8.2.4 应用示例移动文件程序:Private Sub btnMoveFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoveFile.Click Dim spath As String spath = DirListBox1.Path If FileListBox1.FileName = Then MsgBox(请先选择源文件!) Exit Sub End If If txtDestFileName.T

42、ext = Then MsgBox(请输入完整的目标文件名!) Exit Sub End If File.Move(spath & & FileListBox1.FileName, txtDestFileName.Text)End Sub第48页,共72页。8.2.4 应用示例复制文件程序:Private Sub btnCopyFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopyFile.Click Dim spath As String spath = DirListBox

43、1.Path If FileListBox1.FileName = Then MsgBox(请先选择源文件!) Exit Sub End If If txtDestFileName.Text = Then MsgBox(请输入完整的目标文件名!) Exit Sub End If File.Copy(spath & & FileListBox1.FileName, txtDestFileName.Text)End Sub第49页,共72页。8.2.4 应用示例删除文件程序:Private Sub btnDelFile_Click(ByVal sender As System.Object, By

44、Val e As System.EventArgs) Handles btnDelFile.Click Dim spath As String Dim flg As MsgBoxResult spath = FileListBox1.FileName flg = MsgBox(确实要删除 & DirListBox1.Path & & spath & 文件吗?, _ MsgBoxStyle.YesNo) If flg = MsgBoxResult.Yes Then File.Delete(DirListBox1.Path & & spath) End IfEnd Sub第50页,共72页。8.3

45、 文件读写操作8.3.1 文件的种类1顺序文件(Sequential File)顺序文件由一系列ASCII码字符格式的文本行组成,每行的长度可以不同,文件中的每个字符都表示一个文本字符或文本格式设置序列(如换行符等)。顺序文件中的数据按顺序排列,数据的顺序与其在文件中出现的顺序相同。2随机文件(Random Access File)随机文件是以随机方式存取的文件,由一组长度相等的记录组成。在随机文件中,记录包含一个或多个字段(Field),字段类型可以不同,每个字段的长度是固定的,使用前须事先定义好。第51页,共72页。8.3.1 文件的种类3二进制文件(Binary File)一般把文件分为

46、文本文件和二进制文件(顺序文件实际上是以二进制方式存储的)两大类。在VB.NET中,读写文件是通过流(Stream)对象来进行的。使用流对象读写文件的基本步骤如下:(1)建立一个流Stream对象。(2)基于创建的流Stream对象,建立流Reader对象读取文件内容。(3)基于创建的流Stream对象,建立流Writer对象向文件写入内容。第52页,共72页。8.3.2 文本文件读写1FileStream类要进行文件的读写,首先可以使用FileStream类创建一个关于文件的Stream对象。用FileStream类创建FileStream流对象方法的语法格式如下:Dim 对象名 As Ne

47、w FileStream( path , FileMode , AccessMode , ShareMode)例如,创建一个基于C盘根文件夹的名为myfile.txt的文件的FileStream对象,以只读方式打开该文件,方法如下:Dim fstream As New FileStream( C:myfile.txt , FileMode.Open , FileAccess.Read )第53页,共72页。8.3.2 文本文件读写1)Length属性Length属性获取文件的长度,以字节为单位,它是只读属性。2)Position属性Position属性获取或设置文件流的当前位置。FileStr

48、eam没有指示已到文件尾的标志,可以通过比较Length和Position属性值是否相等来检查是否已到文件尾。3)SetLength方法SetLength方法的功能是设置文件的长度,调用的语法格式如下:FileStream.SetLength( NewLength )4)Seek方法FileStream类通过Seek方法对文件进行随机访问,调用的语法格式如下:FileStream.Seek( Offset , Origin )第54页,共72页。8.3.2 文本文件读写5)Lock方法 Lock方法可锁定文件,防止其他进程访问文件的全部或部分,调用的语法格式如下:FileStream.Lock

49、( Position , Length )6)UnLock方法UnLock方法可解锁用Lock方法锁定的文件,调用的语法格式如下:FileStream.UnLock( Position , Length )第55页,共72页。8.3.2 文本文件读写2StreamReader类要进行文本文件的读操作,需要创建一个关于文件的StreamReader对象。用StreamReader类的构造方法创建StreamReader对象的方法的语法格式如下:Dim 对象名 As New StreamReader( FS , Encoding , Buffersize)Dim 对象名 As New Stream

50、Reader( Path , Encoding , Buffersize)例如,创建一个可以读取C盘根文件夹中名为myfile.txt的文件内容的StreamReader对象,需先建立关于该文件的FileStream对象,方法如下:Dim fstream As New FileStream( C:myfile.txt , FileMode.Open , FileAccess.Read )Dim sr As StreamReadersr = New StreamReader(fstream)也可以直接建立和文件关联的StreamReader对象。例如,直接创建一个可以读取C盘根文件夹中名为myf

51、ile.txt的文件内容的StreamReader对象,方法如下:Dim sr As New StreamReader( C:myfile.txt )第56页,共72页。8.3.2 文本文件读写StreamReader类还有如下一些常用方法。1)ReadLine方法ReadLine方法从文件流中读取一行字符,并返回读取的字符串,若到达文件尾,则返回Nothing。ReadLine方法无参数。例如,创建一个可以读取C盘根文件夹中名为myfile.txt的文件内容的StreamReader对象,需先建立关于该文件的FileStream对象,方法如下:Dim fstream As New FileS

52、tream( C:myfile.txt , FileMode.Open , FileAccess.Read )Dim sr As StreamReadersr = New StreamReader(fstream)Dim strLine As StringDim strAll As StringstrLine = sr.ReadLine() 读取文件的第一行strAll = sr.ReadToEnd() 读取文件的全部内容第57页,共72页。8.3.2 文本文件读写2)ReadToEnd方法ReadToEnd方法读取从文件流当前位置到末尾的全部字符,并返回读取的字符串。ReadToEnd方法无

53、参数。3)Read方法Read方法从文件当前位置读取下一个字符或下一组字符,若成功,则返回大于0的整数;若到达文件尾,返回0,若试图读文件尾后的下一个字符,返回-1。调用的语法格式如下:StreamReader.Read(Chars , Startindex , Count )第58页,共72页。8.3.2 文本文件读写3StreamWriter类要进行文本文件的写操作,需要创建一个关于文件的StreamWriter对象。用StreamWriter类创建StreamWriter流对象的方法的语法格式如下:Dim 对象名 As New StreamWriter( FS , Encoding ,

54、Buffersize)Dim 对象名 As New StreamWriter( Path , Append , Encoding , Buffersize)例如,创建一个可以向C盘根文件夹中名为myfile.txt的文本文件写入内容的StreamWriter对象,使用默认UTF-8编码格式,方法如下:Dim fstream As New FileStream( C:myfile.txt , FileMode.Open , FileAccess.ReadWrite )Dim sw As StreamWritersw = New StreamWriter (fstream)也可以直接建立和文件关联

55、的StreamWriter对象。例如,直接创建一个可以向C盘根文件夹中名为myfile.txt的文本文件写入内容的StreamWriter对象,使用默认的UTF-8编码格式,方法如下:Dim sw As New StreamWriter( C:myfile.txt )第59页,共72页。8.3.2 文本文件读写StreamWriter类还有如下一些常用属性和方法:1)NewLine属性NewLine属性获取或设置StreamWriter对象所使用的行结束符,默认为回车换行符。2)AutoFlush属性AutoFlush属性默认为True,在调用Write或WriteLine方法后自动将缓冲区中

56、数据写入文件;若为False,需要调用Flush方法才能将数据写入。3)Encoding属性Encoding属性获取StreamWriter对象所使用的字符编码方式。4)WriteLine方法WriteLine方法将字符和行结束符写入缓冲区。调用的语法格式如下:StreamWriter.WriteLine( str )第60页,共72页。8.3.2 文本文件读写5)Write方法Write方法将字符数组写入缓冲区。调用的语法格式如下:StreamWriter.Write( Chars ,Startindex , Count )6)Flush方法Flush方法将缓冲区数据写入文件。Flush方法

57、无参数。7)Close方法Close方法关闭当前的StreamWriter实例并释放关联的资源,在关闭之前,将缓冲区数据写入文件。Close方法无参数。第61页,共72页。8.3.3 二进制文件读写1BinaryReader类BinaryReader对象实现从二进制文件读取数据。要用BinaryReader对象提供的方法,需要先创建该对象的一个实例。BinaryReader对象是和FileStream对象相关联的,可以利用BinaryReader类的构造方法创建BinaryReader对象的实例,方法的语法格式如下:Dim 对象名 As New BinaryReader( FS , Encod

58、ing )例如,创建一个可以读取C盘根文件夹中名为myfile.dat的二进制文件内容的BinaryReader对象,需先建立关于该文件的FileStream对象,方法如下:Dim fstream As New FileStream( C:myfile.dat , FileMode.Open , FileAccess.Read )Dim sr As BinaryReadersr = New BinaryReader(fstream)第62页,共72页。8.3.3 二进制文件读写建立了BinaryReader对象后,就可以使用它提供的各种方法来读取二进制文件中不同类型的数据,BinaryRead

59、er类提供的各种方法见表8.17。第63页,共72页。8.3.3 二进制文件读写使用BinaryReader对象的方法来读取二进制文件,示例如下:Dim fstream As New FileStream(C:myfile.dat, FileMode.Open , FileAccess.Read )Dim sr As BinaryReadersr = New BinaryReader(fstream)Dim blnX As BooleanDim bytX(9) As ByteDim chrX As CharchrX = sr. ReadChar() 读取一个字符。blnX = sr. Read

60、Boolean() 读取一个逻辑值。bytX = sr.ReadBytes(10) 读取10个字节。第64页,共72页。8.3.3 二进制文件读写2BinaryWriter类BinaryWriter对象实现向二进制文件写入数据。要用BinaryWriter对象提供的方法,需要先创建该对象的一个实例。BinaryWriter对象也是和FileStream对象相关联的,可以利用BinaryWriter类的构造方法创建BinaryWriter对象的实例,方法的语法格式如下:Dim 对象名 As New binaryWriter(FS , Encoding)例如,创建一个可以写入C盘根文件夹中名为my

温馨提示

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

评论

0/150

提交评论