一、I/O类
根据数据存取类型,提供I/O各种功能的类,这些类主要位于System.IO。
I/O类可分为两类: 1、专门操作文件、目录;
2、处理各类数据的存取。
1、文件目录类主要有两大类: (1) 派生于Object的通用类Directory,File,Path
(2) 派生于FileSystemInfo的两个特定类:FileInfo,DirectoryInfo
2、数据存取类主要有三种: (1)二进制;BinaryReader 及 BinaryWriter
(2)字节;Stream及其衍生的子类
(3)字符。TextReadcr、TcxtWritcr及这两个类下衍生的子类
最重要的是Stream类,它是所有数据流类的基类
如图,上面三红框是数据操作类:二进制(左上)、字节(左下)、字符文字(右边)
注:Stream中:BufferedStream 以内存缓冲区为数据源,对数据存取
FileStream 以文件内容为数据源,对数据存取
MemoryStream 以内存为数据存取的来源
NetworkStream 以连接网络为数据源,对数据存取
CryptoSteam 对数据加解密
二、数据流为何叫流
把数据(文件、字符串等)当作流动“物质”,以某种形式(二进制、字节、字符等),好像有次序地通过一个“管道”,到达另一目的地。
尽管不同形式数据有不同的类、方法来操作,但是,真正可以连接底层数据源的,只有Steam类及其派生的子类;
其它类(二进制、字符),都必须串接到数据流,以连接到底层的数据源,进行存取。
三、文件目录操作系统
正如前面所说,有两类:通用与特定,它们都可新建、打开、删除、复制、移动目录和文件。
通用类(左边):派生于基类Object,只提供共享方法成员,不针对特定文件和目录,故不需要创建特定的类对象,就可直接进行
文件目录操作。
特定类(右边):针对特定文件目录的对象,需要创建其类对象,以引用相关方法和属性来完成操作。
四、数据操作
1、字节数据读写
Stream类是这一组类的核心基类,其下派生几个重要数据流子类:
注意:后面两种并不是System.IO空间。NetworkStream必须由连接网络端点的Socket对象返回其对象。
CryptoStream对象则是经过串接其它Stream类对象,新建其对象,然后加解密数据。
2、字符数据读写
主要由TextReader和TextWriter这两个类,提供字符组格式数据串流输入和输出功能。
3、二进制数据读写
主要由BinaryReader与BinaryWriter类来操作,提供对Boolean,整型、浮点型等基础数据类型的读写。
基本数据如:
四、控制台I/O
控制台是文字模式的IO。
由于界面贫乏,故现很少用,主要用于例子演示。IO流程如下:
例子:
'控制台IO Module Module1 Sub Main() Dim yName As String Try Console.WriteLine("输入你的名字:") yName = Console.ReadLine() Console.WriteLine("Hello," & yName & "!!!") Catch ex As Exception Console.WriteLine(ex.Message) End Try Console.ReadLine() End Sub End Module
Module Module1 Sub Main() Dim s As String Dim intRead As Int32 Try Console.Write("请输入字符:") Do intRead = Console.Read() '一次读一个字符(包括换行符) s = ChrW(intRead) Console.WriteLine(s) Loop While intRead <> -1 Console.ReadLine() Catch ex As Exception Console.WriteLine(ex.Message) End Try End Sub End Module
五、IO异常处理。
IOException是所有IO异常类的基类。
同一般程序一样,可以用Try。。。。Catch。。。进行监控捕获。
注: EndOfStreamException是游标已到流的末尾,再次读时会异常。