IO编程

作者: 小船儿爱学习 | 来源:发表于2020-11-19 16:38 被阅读0次

    概念

    Java流式I/O类都包含在java.io包中。有各种不同的流类来满足不同性质的输入/输出需要。根据流中的数据单位不同,Java提供了字节流和字符流两个类的层次体系来处理输入/输出。

    流(Stream):一个有序的字节序列。
    输入流:从某种数据源(如键盘、磁盘文件、网络等)到程序的一个流,程序可以从这个流中读取数据。
    输出流:从程序到某种目的地(如键盘、磁盘文件、网络等)的一个流,程序可以将这些信息写入到这个流。

    字节流&字符流

    字节流:面向字节的流,流中的数据以8位字节为单位进行读写。通常用于读写二进制数据,如图像和声音。
    InputStream和OutputStream是抽象类,它们分别为字节输入和输出操作定义了方法,它们的子类重载或覆盖了这些方法。

    输入/输出字节流类层次结构图.jpg
    字符流:面向字符的流,流中的数据以16位字符为单位进行读写。特别注意的是,为满足国际化表示要求,Java的字符编码是采用16位表示一个字符的Unicode码,而普通的文本文件采用的是8位的ASCII码。
    Reader和Writer是抽象类。它们分别为字符输入和输出操作定义了方法,它们的子类重载或覆盖了这些方法。这些方法与InputStream和OutputStream类定义的方法类似,只是读写的数据由8位byte数据变为了16位char数据。
    输入/输出字符流层次结构图.jpg
    其他流类:除InputStream、OutputStream、Reader、Writer类及其子类外,与流有关的类还有:File类、FileDescriptor类、StreamTokenizer类和RandomAccessFile类。
    File类:是磁盘文件和目录的抽象表示,能够使程序获得一个文件或目录的信息。
    FileDescriptor类:用于以构造文件描述符对象。程序一般不使用FileDescriptor类对象。
    StreamTokenizer类:用于将任何InputStream分割为一系列“记号(Token)”。这些记号实际是一些断续的文本块,中间用我们选择的任何东西分隔。例如,我们的记号可以是单词,中间用空白(空格、回车、Tab等)以及标点符号分隔。
    RandomAccessFile类:用于实现对随机访问文件的读取和写入。

    注意的点

    1、FileOutPutStream(String fileName,boolean append);

    • append = true:表示追加
    • append = false:表示覆盖

    2、缓冲器的细节:Buffer由数据和可以高效地访问及操作这些数据的四个索引组成。四个索引是:mark(标记)、position(位置)、limit(界限)和capacity(容量)。

    缓冲器的方法.jpg

    3、java.lang.process:包含输入流、输出流、错误流。

    process方法.png

    相关文章

      网友评论

          本文标题:IO编程

          本文链接:https://www.haomeiwen.com/subject/ewrliktx.html