第五章VisualBasicNET文件.ppt

上传人:本田雅阁 文档编号:2524718 上传时间:2019-04-05 格式:PPT 页数:51 大小:1.06MB
返回 下载 相关 举报
第五章VisualBasicNET文件.ppt_第1页
第1页 / 共51页
第五章VisualBasicNET文件.ppt_第2页
第2页 / 共51页
第五章VisualBasicNET文件.ppt_第3页
第3页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第五章VisualBasicNET文件.ppt》由会员分享,可在线阅读,更多相关《第五章VisualBasicNET文件.ppt(51页珍藏版)》请在三一文库上搜索。

1、第五章 Visual Basic .NET文件,东北大学软件学院,第五章 Visual Basic .NET文件,2,主要内容,5.1 Visual .NET文件概述 5.2 System.IO模型 5.3 MyComputer.System对象 5.4 处理文件系统事件,第五章 Visual Basic .NET文件,3,5.1 Visual .NET文件概述,文件的结构 文件的类型 Visual Basic .NET文件访问方法,第五章 Visual Basic .NET文件,4,文件的结构,三种常用的文件结构 字节的序列 记录的序列 树型结构,数据只是简单的字节序列, 文件系统不负责解释

2、其意义,记录的序列,记录和记录间可 用空格、回车等分隔符分开,由记录构成的树,记录间 通过指针相互连接,第五章 Visual Basic .NET文件,5,程序文件和数据文件 程序文件:存储计算机程序的源代码或可执行程序, 如.exe, .vb, .c, .h等。 数据文件:存储普通的用户数据,如实验报告,成绩等 普通文件和设备文件 普通文件:代表存储在外存上的有数据集,可以是数据文件也可以是程序文件 设备文件:代表的是与主机相联的各种外部设备,如显示器、打印机、键盘等,文件的结构,第五章 Visual Basic .NET文件,6,文件的类型,文本文件和二进制文件 文本文件:每一个字节存放的

3、是一个ASCII码,代表一个字符 二进制文件:内存中的数据原样输出到文件中 顺序文件和随机文件 顺序文件:按顺序访问方式建立的文件,记录一般是变长记录 二进制文件:记录是定长的,只要知道记录在文件中的顺序,就可以知道记录在文件中的位置,第五章 Visual Basic .NET文件,7,Visual Basic .NET文件访问方法,FileSystem模块 提供一些用于直接访问文件语句和方法 System.IO模型 提供了一个面向对象的方法访问文件系统 My.Computer.FileSystem对象 用来取代FileSystem模块,用于提高应用程序开发的生产性和程序执行的效率,第五章 V

4、isual Basic .NET文件,8,5.2 System.IO模型,System.IO模型的文件读写基于流的概念 流可以抽象地看作一个字节序列,有起始端和末尾端,并且利用游标指示当前的读写位置,第五章 Visual Basic .NET文件,9,在VB.NET中,很多数据都可以看作流,这些数据可以来自内存,来自文件或网络 可以通过Read,Write,Seek等基本操作访问流所代表的数据 Read:从游标所在位置起读取流的数据并存放到指定的数据结构中 Write:操作将数据从游标所在位置起写入流中 Seek:操作将游标移动到流的指定位置,5.2 System.IO模型,第五章 Visua

5、l Basic .NET文件,10,Stream类,MustInherit的抽象类 用Stream类的不同子类代表不同种类流,第五章 Visual Basic .NET文件,11, 其他常用类,第五章 Visual Basic .NET文件,12,文件的打开与关闭,要打开一个文件,只要根据该文件的路径创建一个FileStream类的实例对象即可,Dim 对象名=New FileStream(文件名,打开模式 ,读写权限 ),Dim File1 New FileStream (“C:Text.txt”, _ FileMode.OpenOrCreate, FileAccess.ReadWrite

6、),第五章 Visual Basic .NET文件,13,文件的打开与关闭,FileMode枚举类型,第五章 Visual Basic .NET文件,14,FileAccess枚举类型,文件的打开与关闭,第五章 Visual Basic .NET文件,15,可以通过调用FileStream对象的Close方法关闭与FileStream对象对应的文件 Seek方法和Positon属性都可用来移动游标位置 Seek Position,File1. Close,Dim offset As Integer 偏移量 Dim origin As SeekOrigin 参照点 Dim returnValue

7、 As Long returnValue=Instance.Seek(origin, offset),value = instance.Position 获取游标位置 instance.Position = value 设置游标位置,文件的打开与关闭,第五章 Visual Basic .NET文件,16,SeekOrigin枚举类型,Encoding的Static属性,第五章 Visual Basic .NET文件,17,文本文件的读写操作,可以使用StreamReader和StreamWriter类读写文本文件,Dim 对象名 As New StreamReader(FileStream对象

8、, 编码方式 ) Dim 对象名 As New StreamWriter(FileStream对象, 编码方式 ),(1) 创建StreamReader/StreamWriter对象,第五章 Visual Basic .NET文件,18,Dim 对象名 As New StreamReader (文件名, 编码方式 ) Dim 对象名 As New StreamWriter (文件名, True | False, 编码方式 ),(1) 创建StreamReader/StreamWriter对象,文本文件的读写操作,第五章 Visual Basic .NET文件,19,Dim returnValu

9、e As Integer returnValue = instance.Read,Dim buffer As Char() 存放读取字符串的存储空间 Dim index As Integer 存储空间中开始存放的位置 Dim count As Integer 读取的字符的个数 Dim returnValue As Integer 用于存放返回值 returnValue = instance.Read(buffer, index, count),Dim returnValue As String returnValue = instance.ReadLine,Dim returnValue As

10、 String returnValue = instance.ReadToEnd,(2) 读取文本文件数据,Dim returnValue As Integer returnValue = instance.Peek,If Not instance.EndOfStream Then 如果不是文件末尾 . 读数据 End If,Instance.Close,第五章 Visual Basic .NET文件,20,Example,Dim onechar As Char If reader.peek -1 then onechar = Convert.ToChar(reader.Read) TextB

11、ox1.Text += onechar End if,点击按钮“Read a Character”, 读取一个字符,点击按钮“Read a Line”,读取一行字符,Dim linestr As String If reader.peek-1 then linestr = reader.ReadLine TextBox1.Text += linestr & Chr(13) & Chr(10) 追加回车符号 End if,Dim allstr As String allstr = reader.ReadToEnd TextBox1.Text += allstr,点击按钮“Read to End”

12、, 读取从游标当前位置到文件末尾的所有字符,第五章 Visual Basic .NET文件,21,(3) 向文本文件写入数据,将各种基本数据类型数据以文本形式写入文件 Dim value As Double instance.Write(value),Dim buffer As Char( ) 定义一个字符数组 Dim index As Integer Dim count As Integer 将字符数组内的所有字符写入文件 instance.Write(buffer) 将字符数组中从index开始的count个字符写入文件 instance.Write(buffer, index, coun

13、t),Dim value As String instance.Write(value) 将字符串写入文件,instance.Flush,instance.WriteLine 向文件写入一个行结束符,其他重载方法与Write类似,区别是WriteLine方法多写入一个行结束符 Dim value As String instance.Write(value) 将String+行结束符写入文件,instance.Close,第五章 Visual Basic .NET文件,22,Example,点击按钮”Open File”, 选择要打开的文件,读取全部内容,OpenFileDialog1.Sho

14、wDialog() 选择要打开的文件名 Try file1 = New FileStream(OpenFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite) Catch ex As System.IO.IOException MsgBox(“can not open file“+OpenFileDialog1.FileName Exit Sub End Try Dim freader As New StreamReader(file1) 创建StreamReader对象 TextBox1.Text += freade

15、r.ReadToEnd 读取文件从游标当前位置到末尾的内容,第五章 Visual Basic .NET文件,23,Dim fwriter As New StreamWriter(file1) 创建StreamWriter对象 以文本形式写入姓名(字符串),并换行 fwriter.WriteLine(“Name: “ & TextBox2.Text) 以文本形式写入年龄(整形),并换行 fwriter.WriteLine(age) 以文本形式写入性别(字符串),并换行 fwriter.WriteLine(“Sex: “&ComboBox1.Text) 以文本形式写入电话(字符串) fwriter

16、.Write (“Phone: “&TextBox4.Text) 以文本形式写入电话(字符串) fwriter.WriteLine() 换行 以文本形式写入Email(字符串) fwriter.WriteLine(“Email: “ & TextBox5.Text) fwriter.WriteLine() 换行 fwriter.WriteLine() 写入一个空行,作为与一组输入的分隔 fwriter.Flush() 将缓冲区内的数据全部写入文件 RaiseEvent refre() 唤起refre事件,点击按钮”Write to File”, 选择要打开的文件,读取全部内容,第五章 Visu

17、al Basic .NET文件,24,发生事件”refre”时,从文件中重新读取全部内容,并刷新显示文件内容的文本框,file1.Seek(0, SeekOrigin.Begin) 将游标移至文件开始端 创建StreamReader对象 Dim freader As New StreamReader(file1) TextBox1.Clear() 读取文件从游标当前位置到末尾的全部内容 TextBox1.Text += freader.ReadToEnd,第五章 Visual Basic .NET文件,25,二进制文件的读写操作,可以使用BinaryReader和BinaryWriter类读写

18、二进制文件,(1) 创建BinaryReader/BinaryWriter对象,Dim 对象名 As New BinaryReader (FileStream对象, 编码方式) Dim 对象名 As New BinaryWriter (FileStream对象, 编码方式),Dim File2 New FileStream (“C:binary.txt”, _ FileMode.OpenOrCreate, FileAccess.ReadWrite ) Dim File2Reader As New BinaryReader ( File2 ) Dim File2Writer As New Bin

19、aryWriter ( File2 ),第五章 Visual Basic .NET文件,26,(2) 读取二进制文件数据,Dim returnValue As Integer returnValue = instance.Read 读一个字符,Dim buffer As Byte() 字节数组,用于存放读取的数据 Dim index As Integer 开始存放的位置(在字节数组中) Dim count As Integer 指定读取的字节数 Dim returnValue As Integer 用于存放实际读取的字节数 读取count个字节,从buffer中index处开始存放 retur

20、nValue = instance.Read(buffer, index, count),Dim buffer As Char() 用于存放读取字符的字符数组 Dim index As Integer 开始存放的位置(在字符数组中) Dim count As Integer 指定读取的字符数 Dim returnValue As Integer 用于存放实际读取的字符数 读取count个字符,从buffer中index处开始存放 returnValue = instance.Read(buffer, index, count),读取各种基本数据类型 Dim bovalue As Boolean

21、 bovalue=instance.ReadBoolean Dim bvalue As Byte bvalue=instance.ReadByte,第五章 Visual Basic .NET文件,27,(2) 读取二进制文件数据,Dim count As Integer Dim returnValue As Char() returnValue=instance.ReadChars(count) 读count个字符,Dim count As Integer Dim returnValue As Byte() returnValue=instance.ReadBytes(count) 读coun

22、t个字节,Dim returnValue As String returnValue = instance.ReadString 读字符串,Dim returnValue As Integer returnValue = instance.PeekChar,instance.Close,第五章 Visual Basic .NET文件,28,(3) 向二进制文件写入数据,将各种基本数据类型数据以二进制形式写入文件 Dim value As Double Instance.Write(value),Dim buffer As Byte( ) 定义一个字节数组 Dim index As Intege

23、r Dim count As Integer instance.Write(buffer) 将字节数组内的所有字节写入文件 将字节数组中从index开始的count个字节写入文件 Instance.Write(buffer, index, count),Dim value As String Instance.Write(value) 将字符串写入文件,Instance.Flush,Dim offset As Integer 用于指定偏移量 Dim origin As SeekOrigin 参照点,SeekOrigin枚举类型 Dim returnValue As Long 接收返回值(游标位

24、置) 将游标移动到距参照点origin的偏移量为offset的位置 returnValue = instance.Seek(offset, origin),Instance.Close,第五章 Visual Basic .NET文件,29,Example,点击按钮”Write to File”时, 以二进制形式将记录写入文件,file1.Seek(0, SeekOrigin.End) 将游标移动到文件末尾 Dim snum(16) As Char Dim sname(20) As Char Dim sex(10) As Char 将输入的学号、姓名、性别信息复制到对应字符数组 TextBox3

25、.Text.CopyTo(0, snum, 0, TextBox3.Text.Length) TextBox4.Text.CopyTo(0, sname, 0, TextBox4.Text.Length) ComboBox1.Text.CopyTo(0, sex, 0, ComboBox1.Text.Length),第五章 Visual Basic .NET文件,30,bwriter.Write(snum, 0, 16) 将16个字符(学号)写入文件 bwriter.Write(sname, 0, 20) 将20个字符(姓名)写入文件 bwriter.Write(Val(TextBox5.Te

26、xt) 将Double型数据(年龄)写入文件 bwriter.Write(sex, 0, 8) 将8个字符(学号)写入文件 bwriter.Write(Val(TextBox6.Text) 写入Double型数据(成绩) bwriter.Flush() 将缓存内数据写入文件流,清空缓存 RaiseEvent refre() 唤起事件refre,发生事件”refre”时,分别以文本形式和二进制形式读取文件全部内容,并刷新显示文件内容的文本框,file1.Seek(0, SeekOrigin.Begin) 将游标移至文件开始端 TextBox1.Clear() 清空Textbox1 读取文件从游标

27、当前位置到末尾的全部内容 TextBox1.Text += treader.ReadToEnd file1.Seek(0, SeekOrigin.Begin) 将游标移至文件开始端,第五章 Visual Basic .NET文件,31,TextBox2.Clear()清空Textbox2 Do While (file1.Length - file1.Position) = 60 TextBox2.Text += breader.ReadChars(16) 读取16个字符(学号) TextBox2.Text += vbCrLf TextBox2.Text += breader.ReadChars

28、(20) 读取20个字符(姓名) TextBox2.Text += vbCrLf 读取Double型数值(年龄) TextBox2.Text += Str(breader.ReadDouble) TextBox2.Text += vbCrLf 读取8个字符(性别) TextBox2.Text += breader.ReadChars(8) TextBox2.Text += vbCrLf 读取16个字符(学号) TextBox2.Text += Str(breader.ReadDouble) TextBox2.Text += vbCrLf 在TextBox2中区分相邻记录 TextBox2.Te

29、xt += vbCrLf Loop,第五章 Visual Basic .NET文件,32,5.3 My.Computer.System对象,可以利用My.Computer.FileSystem对象的方法直接访问文件系统 可以读写文本文件和二进制文件 还可以做其他一些文件和目录操作,包括创建/删除文件或目录,移动文件或目录,复制文件或目录,文件或目录的重命名等,第五章 Visual Basic .NET文件,33, My 的顶层对象,第五章 Visual Basic .NET文件,34,文件的读写操作,文本文件的读取 用ReadAllText方法一次将文件全部内容以字符串形式读出 读以记录形式组

30、织起来的文本文件 用OpenTexFileReader方法生成一个StreamReader对象,然后通过StreamReader对象以文本形式读取文件内容,第五章 Visual Basic .NET文件,35,Dim fileContents As String fileContents = My.Computer.FileSystem.ReadAllText(“C:text.txt“) MsgBox(fileContents),ReadAllText方法,ReadAllText (FileName,Encoding ),用于指定写数据的文本文件的路径名,指定文本文件的编码方式,Dim fil

31、eContents As String fileContents = My.Computer.FileSystem.ReadAllText( _ “C:text.txt“, System.Text.Encoding.UTF32) MsgBox(fileContents),如果读取的文本文件采用了拓展的编码方式,在调用ReadAllTex方法时需要给出文本文件的编码方式,第五章 Visual Basic .NET文件,36,读以记录形式组织起来的文本文件,TextFieldParser对象:用于按一次一记录的方式读取用分隔符区分相邻记录的文本文件或定长记录的文本文件,(1) 创建一个TextFi

32、eldParser对象,Using DRReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(“C: test.txt“),DRReader.TextFieldType = FileIO.FieldType.Delimited DRReader.SetDelimiters(“,“),DRReader.TextFieldType =_ Microsoft.VisualBasic.FileIO.FieldType.FixedWidth DRReader.SetFieldWidths(5, 10, 11, 6),第五章 Visual B

33、asic .NET文件,37,(2) 按照一次一记录的方式利用循环控制结构读取文件数据,Dim currentRow As String() 存放读取的记录 While Not DRReader.EndOfData Try currentRow = DRReader.ReadFields() /读取一条记录 Dim currentField As String For Each currentField In currentRow /遍历记录的每一个域 MsgBox(currentField) Next Catch ex As Microsoft.VisualBasic. _ FileIO.M

34、alformedLineException MsgBox(“Line “ & _ ex.Message & “is not valid and will be skipped.“) End Try End While,第五章 Visual Basic .NET文件,38,文件的读写操作,写文本文件 利用WriteAllText方法将字符串数据写入文件 利用OpenTexFileWriter方法生成一个StreamWriter对象,然后通过这个StreamWriter对象向文本文件写入数据,第五章 Visual Basic .NET文件,39,用于指定要写数据的文本文件的路径名,For Each

35、 foundFile As String _ In My.Computer.FileSystem.GetFiles(“C:Work“) foundFile = foundFile & vbCrLf My.Computer.FileSystem.WriteAllText _ (“C:WorkFileList.txt“, foundFile, True) Next,WriteAllText方法,WriteAllText ( fileName, string, True | False, encoding ),True: 将写入的数据追加到文件的末尾; False: 写入数据将覆盖文件中原有的数据,

36、第五章 Visual Basic .NET文件,40,文件的读写操作,二进制文件的读写操作 ReadAllBytes 方法用于读取二进制文件的全部内容 WriteAllBytes方法用于将字节数组以二进制形式写入文件,ReadAllBytes( filename ) WriteAllBytes ( fileName, byteArray, True | False),用于指定读写的二进制文件的路径名,字节数组, 是要写入文件的数据,Dim jpgdata( ) As Byte Jpgdata = My.Computer.FileSystem.ReadAllBytes(“C:temptrees.

37、jpg“) My.Computer.FileSystem.WriteAllBytes (“C:temp1trees.jpg“, True),第五章 Visual Basic .NET文件,41,创建目录 删除目录,其他文件操作,My.Computer.FileSystem.CreateDirectory(directory),My.Computer.FileSystem. _ DeleteDirectory(directory,onDirectoryNotEmpty) My.Computer.FileSystem. _ DeleteDirectory(directory ,showUI ,re

38、cycle) My.Computer.FileSystem. _ DeleteDirectory(directory ,showUI ,recycle ,onUserCancel),第五章 Visual Basic .NET文件,42,复制文件,CopyFile(sourceFileName, destinationFileName) CopyFile(sourceFileName, destinationFileName, overwrite) CopyFile(sourceFileName, destinationFileName, showUI) CopyFile(sourceFileN

39、ame ,destinationFileName, _ showUI, onUserCancel),其他文件操作,第五章 Visual Basic .NET文件,43,其他操作还包括: 复制目录:CopyDirectory 获取目录包含的文件或子目录:GetFiles 移动文件或目录:MoveFile, MoveDirectory 判断文件和目录是否存在:FileExists, DirectoryExists,其他文件操作,第五章 Visual Basic .NET文件,44,5.4 处理文件系统事件,VB.NET提供的FileSystemWatcher组件可以用来监视和处理文件系统发生的更新

40、事件 可以指定使用FileSystmWatcher监视的目录和文件的范围,以及更新操作的类型 生成FileStyemWatcher组件的实例 对生成的FileSytemWatcher实例进行设置,指定用于处理文件更新事件的事件处理函数,第五章 Visual Basic .NET文件,45,创建FileSystemWatcher实例,利用工具箱创建 从工具箱的Components选项卡中拖出FileSytemWather放到应用程序窗体上 直接编写代码创建,Dim myWatcher As _ New System.IO.FileSystemWatcher(),第五章 Visual Basic

41、.NET文件,46,设置FileStreamWatcher,设置Path属性指定监视的目录 设置Filter属性限定监视的范围 设置NotifyFilter属性指定监视的更新类型,Dim MyWatcher As New System.IO.FileSystemWatcher() MyWatcher.Path = “C:“,MyWacher.Filter = “*.ppt”,MyWatcher.IncludeSubdirectories = False MyWatcher.NotifyFilter = System.IO.NotifyFilters.LastAccess _ Or System

42、.IO.NotifyFilters.Size,第五章 Visual Basic .NET文件,47,NotifyFilters枚举类型,设置FileStreamWatcher,第五章 Visual Basic .NET文件,48,FileSystemWacher事件类型,设置FileStreamWatcher,第五章 Visual Basic .NET文件,49,设置FileStreamWatcher,指定事件处理函数 创建事件处理函数: 通过代码设计器直接编写 设置EnableRaisingEvents属性,Private Sub myWatcher_Changed(ByVal sender

43、 As _ System.Object, ByVal e As System.IO.FileSystemEventArgs) Dim pathChanged As String pathChanged = e.FullPath End Sub AddHandler myWatcher.Changed, New System.IO. _ FileSystemEventHandler(AddressOf Me.myWatcher_Changed),MyWatcher.EnableRaisingEvents = True,第五章 Visual Basic .NET文件,50,Example,选择被监视的目录,FolderBrowserDialog1.ShowDialog() FileSystemWatcher1.Path = _ FolderBrowserDialog1.SelectedPath 设置监视的目录,FileSystemWatcher1.EnableRaisingEvents = True,开始监视,End of Chapter,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1