《第五章VisualBasicNET文件教学教材》由会员分享,可在线阅读,更多相关《第五章VisualBasicNET文件教学教材(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文件,6,文件的类型,文本文件和二进制文件 文本文件:每一个字节存放的是一个ASCII码,代表一个字符 二进制文件:内存中的数据原样输出到文件中 顺序文件和随机文件 顺序文件:按顺序访问方式建立的文件,记录一般是变长记录 二进制文件:记录是定长的,只要知道记录在文件中的顺序,就可以知道记录在文件中的位置,第五章 Visual Basic .NET文件,7,Visual Basic .NET文件访问方法,FileSystem模块 提供一些用于直接访问文
3、件语句和方法 System.IO模型 提供了一个面向对象的方法访问文件系统 My.Computer.FileSystem对象 用来取代FileSystem模块,用于提高应用程序开发的生产性和程序执行的效率,第五章 Visual Basic .NET文件,8,5.2 System.IO模型,System.IO模型的文件读写基于流的概念 流可以抽象地看作一个字节序列,有起始端和末尾端,并且利用游标指示当前的读写位置,第五章 Visual Basic .NET文件,9,在VB.NET中,很多数据都可以看作流,这些数据可以来自内存,来自文件或网络 可以通过Read,Write,Seek等基本操作访问流
4、所代表的数据 Read:从游标所在位置起读取流的数据并存放到指定的数据结构中 Write:操作将数据从游标所在位置起写入流中 Seek:操作将游标移动到流的指定位置,5.2 System.IO模型,第五章 Visual Basic .NET文件,10,Stream类,MustInherit的抽象类 用Stream类的不同子类代表不同种类流,第五章 Visual Basic .NET文件,11, 其他常用类,第五章 Visual Basic .NET文件,12,文件的打开与关闭,要打开一个文件,只要根据该文件的路径创建一个FileStream类的实例对象即可,Dim 对象名=New FileSt
5、ream(文件名,打开模式 ,读写权限 ),Dim File1 New FileStream (“C:Text.txt”, _ FileMode.OpenOrCreate, FileAccess.ReadWrite ),第五章 Visual Basic .NET文件,13,文件的打开与关闭,FileMode枚举类型,第五章 Visual Basic .NET文件,14,FileAccess枚举类型,文件的打开与关闭,第五章 Visual Basic .NET文件,15,可以通过调用FileStream对象的Close方法关闭与FileStream对象对应的文件 Seek方法和Positon属性
6、都可用来移动游标位置 Seek Position,File1. Close,Dim offset As Integer 偏移量 Dim origin As SeekOrigin 参照点 Dim returnValue As Long returnValue=Instance.Seek(origin, offset),value = instance.Position 获取游标位置 instance.Position = value 设置游标位置,文件的打开与关闭,第五章 Visual Basic .NET文件,16,SeekOrigin枚举类型,Encoding的Static属性,第五章 Vi
7、sual Basic .NET文件,17,文本文件的读写操作,可以使用StreamReader和StreamWriter类读写文本文件,Dim 对象名 As New StreamReader(FileStream对象, 编码方式 ) Dim 对象名 As New StreamWriter(FileStream对象, 编码方式 ),(1) 创建StreamReader/StreamWriter对象,第五章 Visual Basic .NET文件,18,Dim 对象名 As New StreamReader (文件名, 编码方式 ) Dim 对象名 As New StreamWriter (文件名
8、, True | False, 编码方式 ),(1) 创建StreamReader/StreamWriter对象,文本文件的读写操作,第五章 Visual Basic .NET文件,19,Dim returnValue As Integer returnValue = instance.Read,Dim buffer As Char() 存放读取字符串的存储空间 Dim index As Integer 存储空间中开始存放的位置 Dim count As Integer 读取的字符的个数 Dim returnValue As Integer 用于存放返回值 returnValue = inst
9、ance.Read(buffer, index, count),Dim returnValue As String returnValue = instance.ReadLine,Dim returnValue As String returnValue = instance.ReadToEnd,(2) 读取文本文件数据,Dim returnValue As Integer returnValue = instance.Peek,If Not instance.EndOfStream Then 如果不是文件末尾 . 读数据 End If,Instance.Close,第五章 Visual Ba
10、sic .NET文件,20,Example,Dim onechar As Char If reader.peek -1 then onechar = Convert.ToChar(reader.Read) TextBox1.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 False: 写入数据将覆盖
11、文件中原有的数据,第五章 Visual Basic .NET文件,40,文件的读写操作,二进制文件的读写操作 ReadAllBytes 方法用于读取二进制文件的全部内容 WriteAllBytes方法用于将字节数组以二进制形式写入文件,ReadAllBytes( filename ) WriteAllBytes ( fileName, byteArray, True | False),用于指定读写的二进制文件的路径名,字节数组, 是要写入文件的数据,Dim jpgdata( ) As Byte Jpgdata = My.Computer.FileSystem.ReadAllBytes(C:te
12、mptrees.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 ,showU
13、I ,recycle) My.Computer.FileSystem. _ DeleteDirectory(directory ,showUI ,recycle ,onUserCancel),第五章 Visual Basic .NET文件,42,复制文件,CopyFile(sourceFileName, destinationFileName) CopyFile(sourceFileName, destinationFileName, overwrite) CopyFile(sourceFileName, destinationFileName, showUI) CopyFile(source
14、FileName ,destinationFileName, _ showUI, onUserCancel),其他文件操作,第五章 Visual Basic .NET文件,43,其他操作还包括: 复制目录:CopyDirectory 获取目录包含的文件或子目录:GetFiles 移动文件或目录:MoveFile, MoveDirectory 判断文件和目录是否存在:FileExists, DirectoryExists,其他文件操作,第五章 Visual Basic .NET文件,44,5.4 处理文件系统事件,VB.NET提供的FileSystemWatcher组件可以用来监视和处理文件系统
15、发生的更新事件 可以指定使用FileSystmWatcher监视的目录和文件的范围,以及更新操作的类型 生成FileStyemWatcher组件的实例 对生成的FileSytemWatcher实例进行设置,指定用于处理文件更新事件的事件处理函数,第五章 Visual Basic .NET文件,45,创建FileSystemWatcher实例,利用工具箱创建 从工具箱的Components选项卡中拖出FileSytemWather放到应用程序窗体上 直接编写代码创建,Dim myWatcher As _ New System.IO.FileSystemWatcher(),第五章 Visual B
16、asic .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.IO.NotifyFilters.Size,第五章 Visual Basic .NET文件,47,NotifyFilters枚举类型,设置FileStreamW