版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
文件操作
8.1文件IO流模型8.2文件夹和文件操作8.3文件读写操作8.1文件IO流模型8.1.1System.IO名称空间的资源System.IO模型中的资源由System.IO名称空间提供。该名称空间含有对数据流和文件进行同步或异步读写的类、结构和枚举类型,表8.1、表8.2、表8.3分别列出了System.IO名称空间提供的部分常用的类、结构和枚举类型。8.1.2System.IO名称空间的功能System.IO名称空间提供如下功能(括号中是提供相应功能的类):(1)建立、删除、管理文件和文件夹(File和Directory)。(2)监控文件和文件夹的访问操作(FileSystemWatcher)。(3)对流进行单字节字符或字节块的读/写操作(SystemReader和SystemWriter)。(4)对流进行多字节字符的读/
写操作(SystemReader和SystemWriter)。(5)对流进行字符的读/
写操作(SystemReader和SystemWriter)。(6)对字符串进行字符的读/
写操作,并允许把字符串作为字符流处理(StringReader和StringWriter)。(7)从一个流中读取数据类型和对象,或将数据类型和对象写入流中(BinaryReader和BinaryWriter)。8.1.2System.IO名称空间的功能(8)文件的随机访问(FileStream)。(9)系统性能优化(MemoryStream和BufferedStream)。(10)枚举文件或文件夹的属性(FileAccess、FileMode、FileShare、FileAttributes、DirectoryAttributes)。(11)监控文件或文件夹可能的改变(WatcherChangeTypes)。(12)枚举文件或文件夹可能的改变(ChangedFilters)。(13)指定监控的文件或文件夹(WatcherTarget)。(14)指定文件的相对位置(SeekOrigin)。8.2文件夹和文件操作8.2.1文件夹操作对文件夹操作主要利用Directory和DirectoryInfo两个类来实现,它们都是System.IO名称空间的成员,因此在使用这两个类之前,需要先引入System.IO名称空间,引入的语句如下:ImportsSystem.IO '引入System.IO名称空间。1.Directory类1)CreateDirectory方法CreateDirectory方法的功能是建立一个新的文件夹,同时返回一个包括新建文件夹信息的DirectoryInfo对象(DirectoryInfo对象在本节后面介绍),调用的语法格式如下:Directory.CreateDirectory(path)例如,在C盘根文件夹中创建一个名为temp的子文件夹,方法如下:Directory.CreateDirectory("C:\temp"
) CreateDirectory方法还可以一次建立多级文件夹,示例如下:Directory.CreateDirectory("C:\dir1\dir2\dir3"
) 8.2.1文件夹操作2)Delete方法Delete方法的功能是删除指定文件夹及其中的所有文件和子文件夹,调用的语法格式如下:Directory.Delete(path,force)例如,删除C盘根文件夹中的名为temp的空文件夹,方法如下:Directory.Delete("C:\temp") 若temp文件夹中没有任何文件或子文件夹,即可成功删除,否则将产生异常。如要删除含有子文件夹的文件夹,应使用带force参数的方法,示例如下:Directory.Delete("C:\temp",True) 8.2.1文件夹操作3)Exists方法Exists方法的功能是判断指定的文件夹是否存在,若存在则返回一个逻辑值True;否则返回False。调用的语法格式如下:Directory.Exists(path)如果指定的文件夹不存在,Directory类的很多方法会失败,因此在做文件夹操作前,可以先用Exists方法确定文件夹是否存在,示例如下:IfDirectory.Exists("C:\temp") then Directory.Delete("C:\temp",True)8.2.1文件夹操作4)Move方法Move方法的功能是移动指定的整个文件夹到同一个磁盘中的另外一个位置。Move方法具有改名功能,即将源文件夹移动到目标文件夹指定的位置,但不是移动到目标文件夹中,而是将源文件夹名改为目标文件夹名。调用它的语法格式如下:Directory.Move(source,destination)例如,将C盘根文件夹中名为temp的子文件夹移动到“C:\”中,并改名为dir1,方法如下:Directory.Move("C:\temp","C:\dir1") 8.2.1文件夹操作5)GetLogicalDrives方法GetLogicalDrives方法的功能是返回一个字符串数组,其中包括当前计算机中所有逻辑驱动器名,每个驱动器名是形如“C:\”的字符串。调用的语法格式如下:Directory.GetLogicalDrives()例如,下面示例获得本机所有逻辑驱动器的名字,将其存放到字符串数组myDrv中,并将数组中所有元素放到一个组合框ComboBox1中:DimmyDrv(),xAsStringmyDrv=Directory.GetLogicalDrives() ForEachxInmyDrv ComboBox1.Items.Add(x)Nextx8.2.1文件夹操作6)GetDirectories方法GetDirectories方法的功能是返回一个字符串数组,其中包括指定文件夹的所有子文件夹的完整路径名,不包括子文件夹中的子文件夹名。调用的语法格式如下:Directory.GetDirectories(path,pattern)例如,下面示例获得C盘dir1文件夹的所有子文件夹的名字,将其存放到字符串数组myDrv中:DimmyDrv()AsStringmyDrv=Directory.GetDirectories("C:\dir1") GetDirectories方法还可以使用通配符,获得符合条件的子文件夹名。例如,要获得C:\WinNT下所有名字中包含“system”的子文件夹名,使用下面的语句:DimmyDrv()AsStringmyDrv=Directory.GetDirectories("C:\WinNT","*system*"
)
8.2.1文件夹操作7)GetFiles方法GetFiles方法的功能是返回一个字符串数组,其中包括指定文件夹的所有文件的完整路径名,但不包括子文件夹中的文件名。调用的语法格式如下:Directory.GetFiles(path,pattern)例如,下面示例获得C盘dir1文件夹中的所有文件的名字,将其存放到字符串数组myFiles中:DimmyFiles()AsStringmyFiles=Directory.GetFiles(
"C:\dir1"
) GetFiles方法还可以使用通配符,获得符合条件的文件名。例如,要获得C:\WinNT下所有扩展名为ini的文件名,使用下面的语句:DimmyFiles()AsStringmyFiles=Directory.GetFiles(
"C:\WinNT","*.ini"
) 8.2.1文件夹操作8)GetFileSystemEntries方法GetFileSystemEntries方法的功能是返回一个字符串数组,其中包括指定文件夹的所有子文件夹和文件的完整路径名,但不包括子文件夹中的文件夹和文件名。该方法实际是GetDirectories和GetFiles方法返回的数组的总和。调用的语法格式如下:Directory.GetFileSystemEntries(path,pattern)例如,下面示例获得C盘dir1文件夹中所有文件夹和文件的名字,将其存放到字符串数组myFiles中:DimmyFiles()AsStringmyFiles=Directory.GetFileSystemEntries(C:\dir1")
8.2.1文件夹操作GetFileSystemEntries方法也可以使用通配符,获得符合条件的文件夹和文件名。例如,要获得C:\WinNT下所有包含“system”的文件夹和文件名,使用下面的语句:DimmyFiles()AsStringmyFiles=Directory.GetFileSystemEntries(
"C\WinNT","*system*"
) 若要列举C:\WinNT下所有的文件夹和文件名,可以使用下面的语句:DimmyFiles()AsStringForEachmyFilesInDirectory.GetFileSystemEntries("C:\WinNT") Console.WriteLine(myFiles) '在输出窗口显示文件夹或文件名。Next8.2.1文件夹操作除了前面介绍的方法,Directory对象还有其他的一些方法,见表8.4,读者可查阅资料或在线帮助,了解它们的功能和用法。8.2.1文件夹操作2.DirectoryInfo类创建DirectoryInfo对象的一个实例是通过调用它的构造函数来实现的,语法格式如下:Dim对象名AsNewDirectoryInfo(path)例如,下面语句创建了一个关于C盘根文件夹的DirectoryInfo对象:DimdiAsNewDirectoryInfo(
"C:\"
)8.2.1文件夹操作1)CreateSubDirectory方法CreateSubDirectory方法的功能是在当前实例所指定的文件夹下建立一个新文件夹,同时返回一个DirectoryInfo对象来代表新子文件夹,调用的语法格式如下:对象名.CreateSubDirectory(path)例如,在C盘根文件夹中创建一个名为temp的子文件夹,示例如下:DimdiAsNewDirectoryInfo("C:\")Di.CreateSubDirectory("temp")
CreateSubDirectory方法还可以一次建立多级文件夹,示例如下:DimdiAsNewDirectoryInfo(
"C:\")Di.CreateSubDirectory("dir1\dir2\dir3") 8.2.1文件夹操作2)GetFileSystemInfos方法GetFileSystemInfos方法的功能是返回一个FileSystemInfo对象数组,数组中的每个元素都是当前实例所表示的文件夹中的文件和子文件夹。调用的语法格式如下:对象名.GetFileSystemInfos(pattern)例如,获取C盘根文件夹中所有文件和子文件夹对象,示例如下:DimdiAsNewDirectoryInfo("C:\")DimitemsInfo()AsFileSystemInfoItemsInfo=di.GetFileSystemInfos() GetFileSystemInfos方法还可以使用通配符,获得符合条件的对象。例如,要获得C:\WinNT下所有包含“system”的文件夹和文件对象,使用下面的语句:DimdiAsNewDirectoryInfo("C:\WinNT")DimitemsInfo()AsFileSystemInfoItemsInfo=di.GetFileSystemInfos("*system*")
8.2.1文件夹操作FileSystemInfo对象的常用属性见表8.5。8.2.1文件夹操作如果要区分是文件还是文件夹,可以判断FileSystemInfo对象的Attributes属性是否为文件夹(即是否等于FileAttribute枚举的Directory值),是即为文件夹,否则就是文件。代码如下:DimdiAsNewDirectoryInfo("C:\")DimiAsIntegerDimitemsInfo()AsFileSystemInfoitemsInfo=di.GetFileSystemInfos("*system*")i=1IfitemsInfo(i).AttributesAndFileAttributes.DirectoryThen '是文件夹Else '是文件。EndIf 8.2.2文件操作1.File类File类提供操作文件的方法,包括复制、移动、打开、关闭文件等方法。File类有些方法的使用与Directory类相同,表8.6列出了相同的方法。8.2.2文件操作1)Create方法Create方法的功能是建立并打开一个新文件,同时返回指向该文件的Stream流对象。调用Create方法的语法格式如下:File.Create(path,bufferSize)例如,在C盘根文件夹中创建一个名为myfile.dat的文件,返回一个名为ss的Stream流对象,方法如下:dimssAsStreamss=File.Create("C:\myfile.dat") Create方法还可以在创建文件的同时指定文件的缓冲区大小。例如,在C盘根文件夹中创建一个名为myfile.dat的文件,并指定该文件的缓冲区为4096字节,示例如下:dimssAsStreamss=File.Create("C:\myfile.dat",4096) 8.2.2文件操作在有些情况下,用File类的Create方法创建文件时会发生异常,表8.7列出了各种可能导致异常的类型。8.2.2文件操作2)CreateText方法CreateText方法类似于Create方法,它的功能是建立并打开一个新文本文件,同时返回指向该文件的StreamWriter流对象。StreamWriter对象类似于Stream对象,但它只能用于文本文件的读/写操作,而Stream对象可以用于文本文件和二进制文件的读/写操作。调用CreateText方法的语法格式如下:File.CreateText(path)例如,在C盘根文件夹中创建一个名为myfile.txt的文本文件,并返回一个名为sw的StreamWriter流对象,方法如下:dimswAsStreamWritersw=File.CreateText("C:\myfile.txt")
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:\dir1\myfile_bak.txt",True)8.2.2文件操作4)Move方法Move方法的功能是将指定的文件移动到新的位置,可以使用它来给文件改名。另外它允许在不同的磁盘上移动文件,这与Directory类的Move方法不同。调用它的语法格式如下:File.Move(source,destination)例如,将C盘根文件夹中名为myfile.txt的文件移动到D:\dir1中,并更名为myfile_new.txt,方法如下:File.Move("C:\myfile.txt","D:\dir1\myfile_new.txt")8.2.2文件操作5)Delete方法Delete方法的功能是删除指定的文件,若文件被打开,将产生异常。调用它的语法格式如下:File.Delete(path)例如,删除C盘根文件夹中名为myfile.txt的文件,方法如下:File.Delete("C:\myfile.txt")8.2.2文件操作6)GetAttributes方法GetAttributes方法的功能是获得指定文件的属性,该方法返回一个FileAttributes对象,该对象包含文件的所有属性,表8.8列出了文件的各种属性。调用GetAttributes方法的语法格式如下:File.GetAttributes(path)8.2.2文件操作7)Open方法Open方法的功能是打开一个已经存在的文件,并返回一个指向该文件的Stream对象。调用它的语法格式如下:File.Open(path,FileMode,AccessMode,ShareMode)其中:(1)path,String类型,代表要打开文件的完整路径,绝对路径和相对路径均可。(2)FileMode,可选项,枚举类型,指定文件的打开方式,取值见表8.9。8.2.2文件操作(3)AccessMode,可选项,枚举类型,指定文件的访问权限,取值见表8.10。(4)ShareMode,可选项,枚举类型,指定文件的共享方式,取值见表8.11。8.2.2文件操作例如,以只读方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dimfstreamAsStreamfstream=File.Open(“C:\myfile.txt”,FileMode.Open,FileAccess.Read) 上面的语句要求文件必须存在,若文件不存在,要求能创建该文件并以读/写方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dimfstreamAsStreamfstream=File.Open("C:\myfile.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite) 8.2.2文件操作8)OpenRead方法OpenRead方法的功能是以读方式打开一个已经存在的文件,并返回一个指向该文件的Stream对象。若文件不存在或被打开,将产生异常。调用它的语法格式如下:File.OpenRead(path)OpenRead方法等价于用Open方法的Read访问权限方式打开一个已经存在的文件。例如,以读方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dimfstreamAsStreamfstream=File.OpenRead("C:\myfile.txt") 8.2.2文件操作9)OpenWrite方法OpenWrite方法的功能是以写方式打开一个已经存在的文件,并返回一个指向该文件的Stream对象。若文件不存在或被打开,将产生异常。调用它的语法格式如下:File.OpenWrite(path)OpenWrite方法等价于用Open方法的Write访问权限方式打开一个已经存在的文件。例如,以写方式打开C盘根文件夹中名为myfile.txt的文件,方法如下:dimfstreamAsStreamfstream=File.OpenWrite("C:\myfile.txt")
8.2.2文件操作10)AppendText方法AppendText方法的功能是以追加方式打开一个文本文件,可以在这个文件后追加文本,并返回一个指向该文件的StreamWriter对象。若文件不存在,将建立一个新文件并打开。调用它的语法格式如下:File.AppendText(path)例如,以追加方式打开C盘根文件夹中名为myfile.txt的文本文件,方法如下:dimfswAsStreamWriterfsw=File.AppendText("C:\myfile.txt") 8.2.2文件操作11)OpenText方法OpenText方法的功能是以读方式打开一个已经存在的文本文件,并返回一个指向该文件的StreamReader对象。若文件不存在,将产生异常。调用它的语法格式如下:File.OpenText(path)例如,以读方式打开C盘根文件夹中名为myfile.txt的文本文件,方法如下:dimfsrAsStreamReaderfsr=File.OpenText("C:\myfile.txt")
8.2.2文件操作2.FileInfo类创建FileInfo对象的一个实例是通过调用它的构造函数来实现的,其语法格式如下:Dim对象名AsNewFileInfo(path)例如,下面语句创建了一个关于C盘根文件夹中myFile.txt文件的FileInfo对象:DimfiAsNewFileInfo("C:\myFile.txt")1)Length属性Length属性返回以字节为单位的文件大小,返回结果为Long类型。File类没有提供类似的属性或方法。2)CreationTime、LastAccessTime、LastWriteTime属性CreationTime属性返回文件建立的时间,LastAccessTime属性返回文件最后一次访问的时间,LastWriteTime属性返回文件最后一次修改的时间。8.2.2文件操作3)Name、FullName、Extension属性Name属性返回文件名,FullName属性返回完整文件名(包括全路径),Extension属性返回文件的扩展名,3个属性值都是String类型。4)CopyTo和MoveTo方法这两个方法的功能分别是复制和移动当前FileInfo实例所代表的文件,类似于File类的Copy和Move方法。CopyTo方法会返回一个FileInfo对象,代表目标文件。调用的语法格式如下:FileInfo对象名.CopyTo(path,force)FileInfo对象名.MoveTo(path)8.2.2文件操作5)Directory方法Directory方法返回一个代表文件父目录的DirectoryInfo对象。6)DirectoryName方法DirectoryName方法返回文件父目录的名字字符串。8.2.3文件管理控件VB.NET提供了DriveListBox、DirListBox和FileListBox三个控件,分别用于对驱动器、文件夹和文件的操作。这3个控件并不在标准的控件工具箱中,使用时需要先添加到工具箱中,在工具箱上单击鼠标右键,在弹出的菜单上选择【选择项】,打开如图8.1所示。8.2.3文件管理控件1.DriveListBox控件DriveListBox控件主要用于磁盘驱动器的操作,使用该控件可以进行驱动器的切换和选择。DriveListBox控件的常用属性及事件如表8.12所示。8.2.3文件管理控件2.DirListBox控件DirListBox控件主要用于显示文件夹列表,它可以对所选择的文件夹进行操作。比如,选择路径和设置当前文件夹。DirListBox控件的常用属性及事件如表8.13所示。8.2.3文件管理控件3.FileListBox控件FileListBox控件主要用于显示文件列表,使用该控件可以对所选择的文件进行操作。FileListBox控件的常用属性及事件如表8.14所示。8.2.4应用示例【例8.1】利用DriveListBox、DirListBox、FileListBox这3种控件,使驱动器列表框、文件夹列表框和文件列表框保持联动,并能创建、删除、移动文件和文件夹。1.界面设计
设置一个驱动器列表框(DriveListBox)、一个文件夹列表框(DirListBox)、一个文件列表框(FileListBox)、2个GroupBox和多个标签(Label)、文本框及命令按钮(Button)。表8.15列出了其主要对象及属性。8.2.4应用示例8.2.4应用示例2.程序代码设计为了使用File和Directory类所提供的方法,在模块中要先引入System.IO名称空间。'引入名称空间System.IOImportsSystem.IO要使驱动器列表框、文件夹列表框和文件列表框保持联动,需分别编写DriveListBox1和DirListBox1的SelectedIndexChanged事件代码,相关程序如下:PrivateSubDriveListBox1_SelectedIndexChanged(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs)HandlesDriveListBox1.SelectedIndexChangedDirListBox1.Path=DriveListBox1.DriveEndSub
PrivateSubDirListBox1_SelectedIndexChanged(ByValsenderAsSystem.Object, ByValeAsSystem.EventArgs)HandlesDirListBox1.SelectedIndexChangedFileListBox1.Path=DirListBox1.PathEndSub8.2.4应用示例要实现创建、删除、移动文件夹操作,需分别编写相应按钮的单击事件代码。创建文件夹程序:PrivateSubbtnNewDir_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnNewDir.ClickDimspathAsStringspath=DirListBox1.PathIftxtNewDirName.Text=""Orspath=""ThenMsgBox("请输入要新建的文件夹名!")ElseDirectory.CreateDirectory(spath&"\"&txtNewDirName.Text)EndIfEndSub8.2.4应用示例移动文件夹程序。删除文件夹程序:PrivateSubbtnDelDir_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnDelDir.ClickDimspathAsStringDimflgAsMsgBoxResultspath=DirListBox1.Pathflg=MsgBox("确实要删除"&spath&"文件夹吗?",MsgBoxStyle.YesNo)Ifflg=MsgBoxResult.YesThenDirectory.Delete(spath)EndIfEndSub8.2.4应用示例对文件进行创建、删除、复制、移动操作,需分别编写相应按钮的单击事件代码。创建文件程序:PrivateSubbtnNewFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnNewFile.ClickDimspathAsStringDimssAsStreamspath=DirListBox1.PathIftxtNewFileName.Text=""Orspath=""ThenMsgBox("请输入要新建的文件名!")Elsess=File.Create(spath&"\"&txtNewFileName.Text)ss.Close()EndIfEndSub8.2.4应用示例移动文件程序:PrivateSubbtnMoveFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnMoveFile.ClickDimspathAsStringspath=DirListBox1.PathIfFileListBox1.FileName=""ThenMsgBox("请先选择源文件!")ExitSubEndIfIftxtDestFileName.Text=""ThenMsgBox("请输入完整的目标文件名!")ExitSubEndIfFile.Move(spath&"\"&FileListBox1.FileName,txtDestFileName.Text)EndSub8.2.4应用示例复制文件程序:PrivateSubbtnCopyFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnCopyFile.ClickDimspathAsStringspath=DirListBox1.PathIfFileListBox1.FileName=""ThenMsgBox("请先选择源文件!")ExitSubEndIfIftxtDestFileName.Text=""ThenMsgBox("请输入完整的目标文件名!")ExitSubEndIf
File.Copy(spath&"\"&FileListBox1.FileName,txtDestFileName.Text)EndSub8.2.4应用示例删除文件程序:PrivateSubbtnDelFile_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnDelFile.ClickDimspathAsStringDimflgAsMsgBoxResultspath=FileListBox1.FileNameflg=MsgBox("确实要删除"&DirListBox1.Path&"\"&spath&"文件吗?",_MsgBoxStyle.YesNo)Ifflg=MsgBoxResult.YesThenFile.Delete(DirListBox1.Path&"\"&spath)EndIfEndSub8.3文件读写操作8.3.1文件的种类1.顺序文件(SequentialFile)顺序文件由一系列ASCII码字符格式的文本行组成,每行的长度可以不同,文件中的每个字符都表示一个文本字符或文本格式设置序列(如换行符等)。顺序文件中的数据按顺序排列,数据的顺序与其在文件中出现的顺序相同。2.随机文件(RandomAccessFile)随机文件是以随机方式存取的文件,由一组长度相等的记录组成。在随机文件中,记录包含一个或多个字段(Field),字段类型可以不同,每个字段的长度是固定的,使用前须事先定义好。8.3.1文件的种类3.二进制文件(BinaryFile)一般把文件分为文本文件和二进制文件(顺序文件实际上是以二进制方式存储的)两大类。在VB.NET中,读写文件是通过流(Stream)对象来进行的。使用流对象读写文件的基本步骤如下:(1)建立一个流Stream对象。(2)基于创建的流Stream对象,建立流Reader对象读取文件内容。(3)基于创建的流Stream对象,建立流Writer对象向文件写入内容。8.3.2文本文件读写1.FileStream类要进行文件的读写,首先可以使用FileStream类创建一个关于文件的Stream对象。用FileStream类创建FileStream流对象方法的语法格式如下:Dim对象名
AsNewFileStream(path,FileMode,AccessMode,ShareMode)例如,创建一个基于C盘根文件夹的名为myfile.txt的文件的FileStream对象,以只读方式打开该文件,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.Read)
8.3.2文本文件读写1)Length属性Length属性获取文件的长度,以字节为单位,它是只读属性。2)Position属性Position属性获取或设置文件流的当前位置。FileStream没有指示已到文件尾的标志,可以通过比较Length和Position属性值是否相等来检查是否已到文件尾。3)SetLength方法SetLength方法的功能是设置文件的长度,调用的语法格式如下:FileStream.SetLength(NewLength)4)Seek方法FileStream类通过Seek方法对文件进行随机访问,调用的语法格式如下:FileStream.Seek(Offset,Origin)
8.3.2文本文件读写5)Lock方法Lock方法可锁定文件,防止其他进程访问文件的全部或部分,调用的语法格式如下:FileStream.Lock(Position,Length)6)UnLock方法UnLock方法可解锁用Lock方法锁定的文件,调用的语法格式如下:FileStream.UnLock(Position,Length)8.3.2文本文件读写2.StreamReader类要进行文本文件的读操作,需要创建一个关于文件的StreamReader对象。用StreamReader类的构造方法创建StreamReader对象的方法的语法格式如下:Dim对象名
AsNewStreamReader(FS,Encoding,Buffersize)Dim对象名
AsNewStreamReader(Path,Encoding,Buffersize)例如,创建一个可以读取C盘根文件夹中名为myfile.txt的文件内容的StreamReader对象,需先建立关于该文件的FileStream对象,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.Read)DimsrAsStreamReadersr=NewStreamReader(fstream)也可以直接建立和文件关联的StreamReader对象。例如,直接创建一个可以读取C盘根文件夹中名为myfile.txt的文件内容的StreamReader对象,方法如下:DimsrAsNewStreamReader("C:\myfile.txt")8.3.2文本文件读写StreamReader类还有如下一些常用方法。1)ReadLine方法ReadLine方法从文件流中读取一行字符,并返回读取的字符串,若到达文件尾,则返回Nothing。ReadLine方法无参数。例如,创建一个可以读取C盘根文件夹中名为myfile.txt的文件内容的StreamReader对象,需先建立关于该文件的FileStream对象,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.Read) DimsrAsStreamReadersr=NewStreamReader(fstream)DimstrLineAsStringDimstrAllAsStringstrLine=sr.ReadLine() '读取文件的第一行strAll=sr.ReadToEnd() '读取文件的全部内容8.3.2文本文件读写2)ReadToEnd方法ReadToEnd方法读取从文件流当前位置到末尾的全部字符,并返回读取的字符串。ReadToEnd方法无参数。3)Read方法Read方法从文件当前位置读取下一个字符或下一组字符,若成功,则返回大于0的整数;若到达文件尾,返回0,若试图读文件尾后的下一个字符,返回-1。调用的语法格式如下:StreamReader.Read(Chars,Startindex,Count)8.3.2文本文件读写3.StreamWriter类要进行文本文件的写操作,需要创建一个关于文件的StreamWriter对象。用StreamWriter类创建StreamWriter流对象的方法的语法格式如下:Dim对象名
AsNewStreamWriter(FS,Encoding,Buffersize)Dim对象名
AsNewStreamWriter(Path,Append,Encoding,Buffersize)例如,创建一个可以向C盘根文件夹中名为myfile.txt的文本文件写入内容的StreamWriter对象,使用默认UTF-8编码格式,方法如下:DimfstreamAsNewFileStream("C:\myfile.txt",FileMode.Open,FileAccess.ReadWrite)DimswAsStreamWritersw=NewStreamWriter(fstream)也可以直接建立和文件关联的StreamWriter对象。例如,直接创建一个可以向C盘根文件夹中名为myfile.txt的文本文件写入内容的StreamWriter对象,使用默认的UTF-8编码格式,方法如下:DimswAsNewStreamWriter("C:\myfile.txt")8.3.2文本文件读写StreamWriter类还有如下一些常用属性和方法:1)NewLine属性NewLine属性获取或设置StreamWriter对象所使用的行结束符,默认为回车换行符。2)AutoFlush属性AutoFlush属性默认为True,在调用Write或WriteLine方法后自动将缓冲区中数据写入文件;若为False,需要调用Flush方法才能将数据写入。3)Encoding属性Encoding属性获取StreamWriter对象所使用的字符编码方式。4)WriteLine方法WriteLine方法将字符和行结束符写入缓冲区。调用的语法格式如下:StreamWriter.WriteLine(str)8.3.2文本文件读写5)Write方法Write方法将字符数组写入缓冲区。调用的语法格式如下:StreamWriter.Write(Chars,
Startindex,Count)6)Flush方法Flush方法将缓冲区数据写入文件。Flush方法无参数。7)Close方法Close方法关闭当前的StreamWriter实例并释放关联的资源,在关闭之前,将缓冲区数据写入文件。Close方法无参数。8.3.3二进制文件读写1.BinaryReader类BinaryReader对象实现从二进制文件读取数据。要用BinaryReader对象提供的方法,需要先创建该对象的一个实例。BinaryReader对象是和FileStream对象相关联的,可以利用BinaryReader类的构造方法创建BinaryReader对象的实例,方法的语法格式如下:Dim对象名
AsNewBinaryReader(FS,Encoding)例如,创建一个可以读取C盘根文件夹中名为myfile.dat的二进制文件内容的BinaryReader对象,需先建立关于该文件的FileStream对象,方法如下:DimfstreamAsNewFileStream("C:\myfile.dat",FileMode.Open,FileAccess.Read)DimsrAsBinaryReadersr=NewBinaryReader(fstream)8.3.3二进制文件读写建立了BinaryReader对象后,就可以使用它提供的各种方法来读取二进制文件中不同类型的数据,BinaryReader类提供的各种方法见表8.17。8.3.3二进制文件读写使用BinaryReader对象的方法来读取二进制文件,示例如下:DimfstreamAsNewFileStream("C:\myfile.dat",FileMode.Open,FileAccess.Read)DimsrAsBinaryReadersr=NewBinaryReader(fstream)DimblnXAsBooleanDimbytX(9)AsByteDimchrXAsCharchrX=sr.ReadChar() '读取一个字符。blnX=sr.ReadBoolean() '读取一个逻辑值。bytX=sr.ReadBytes(10) '读取10个字节。8.3.3二进制文件读写2.BinaryWriter类BinaryWriter对象实现向二进制文件写入数据。要用BinaryWriter对象提供的方法,需要先创建该对象的一个实例。BinaryWriter对象也是和FileStream对象相关联的,可以利用BinaryWriter类的构造方法创建BinaryWriter对象的实例,方法的语法格式如下:Dim对象名
AsNewbinaryWriter(FS,Encoding)例如,创建一个可以写入C盘根文件夹中名为myfile.dat的二进制文件内容的BinaryWriter对象,需先建立关于该文件的FileStream对象,方法如下:DimfstreamAsNewFileStream(
"C:\myfile.dat",FileMode.Open,FileAccess.Read)DimbwAsBinaryWriterbw=NewBinaryWriter(fstream)8.3.3二进制文件读写建立BinaryWriter对象后,就可以使用它提供的几种方法向二进制文件中写入不同类型的数据,BinaryWriter类提供的各种方法见表8.18。8.3.4应用示例【例8.2】选择一个磁盘中的文本文件,利用StreamReader对象,读取文本文件内容并显示在文本框中,修改显示的文件内容后,再利用StreamWriter对象把文本框中修改后的内容写回到该文件中。1.界面设计设置一个显示选择文件的文本框和一个显示打开的文件内容的多行文本框(TextBox)、一个标签(Label)及3个命令按钮(Button)。另外,为了能打开一个文件,还要添加一个打开文件对话框控件OpenFileDialog1。8.3.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《机电概念设计基础》课件-运行时行为
- 2024外墙保温材料绿色施工技术与材料购销合同协议2篇
- 换签租赁合同(2篇)
- 2024年版项目管理实践之招投标策略3篇
- 2024年田土承包与土地整治服务合同协议3篇
- 2025年宝鸡货物从业资格证考试题
- 2025年中卫货运从业资格证试题库及答案
- 2025年杭州货运从业资格证模拟考试0题题库
- 2025年福州货运从业资格证考500试题
- 2025年哈尔滨货运从业资格考试
- 2024-2030年全球与中国石墨匣钵市场现状动态及投资价值评估报告
- 肾穿刺活检术的准备和操作方法教学提纲
- 20以内的加法口算练习题4000题 210
- 读书分享课件:《一句顶一万句》
- GB 17927-2024家具阻燃性能安全技术规范
- 公墓管理制度模板
- 补签考勤管理制度
- 30万吨级原油码头工程施工组织设计(沉箱重力墩式栈桥码头)
- 地力培肥合同协议书
- 第七单元《条形统计图》(教案)-2024-2025学年四年级上册数学人教版
- 2024年秋新人教版七年级上册生物课件 第四章 生物分类的方法 第二节 从种到界
评论
0/150
提交评论