笔记1: 输入输出I/O流架构

时间:2022-08-04 13:57:47




一、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类,它是所有数据流类的基类

        笔记1: 输入输出I/O流架构

       如图,上面三红框是数据操作类:二进制(左上)、字节(左下)、字符文字(右边)


       注:Stream中:BufferedStream   以内存缓冲区为数据源,对数据存取

                                    FileStream            以文件内容为数据源,对数据存取

                                    MemoryStream    以内存为数据存取的来源

                                    NetworkStream    以连接网络为数据源,对数据存取

                                    CryptoSteam         对数据加解密



二、数据流为何叫流

        把数据(文件、字符串等)当作流动“物质”,以某种形式(二进制、字节、字符等),好像有次序地通过一个“管道”,到达另一目的地。


      尽管不同形式数据有不同的类、方法来操作,但是,真正可以连接底层数据源的,只有Steam类及其派生的子类;

      其它类(二进制、字符),都必须串接到数据流,以连接到底层的数据源,进行存取。

     笔记1: 输入输出I/O流架构






三、文件目录操作系统

      正如前面所说,有两类:通用与特定,它们都可新建、打开、删除、复制、移动目录和文件。

        笔记1: 输入输出I/O流架构

       通用类(左边):派生于基类Object,只提供共享方法成员,不针对特定文件和目录,故不需要创建特定的类对象,就可直接进行

                                       文件目录操作。

 

       特定类(右边):针对特定文件目录的对象,需要创建其类对象,以引用相关方法和属性来完成操作。







四、数据操作

      1、字节数据读写

            Stream类是这一组类的核心基类,其下派生几个重要数据流子类:

            笔记1: 输入输出I/O流架构

            注意:后面两种并不是System.IO空间。NetworkStream必须由连接网络端点的Socket对象返回其对象。

                                                                                  CryptoStream对象则是经过串接其它Stream类对象,新建其对象,然后加解密数据。



       2、字符数据读写

             主要由TextReader和TextWriter这两个类,提供字符组格式数据串流输入和输出功能。

             笔记1: 输入输出I/O流架构




        3、二进制数据读写

             主要由BinaryReader与BinaryWriter类来操作,提供对Boolean,整型、浮点型等基础数据类型的读写。

             基本数据如:

            笔记1: 输入输出I/O流架构





四、控制台I/O

       控制台是文字模式的IO。

       由于界面贫乏,故现很少用,主要用于例子演示。IO流程如下:

        笔记1: 输入输出I/O流架构


        例子:

         笔记1: 输入输出I/O流架构

        

'控制台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。。。进行监控捕获。

       笔记1: 输入输出I/O流架构

      注:  EndOfStreamException是游标已到流的末尾,再次读时会异常。