美文网首页
2020-09-21 Java IO流

2020-09-21 Java IO流

作者: 偕_2bb8 | 来源:发表于2020-09-22 22:08 被阅读0次

    转载自并发编程网 – ifeve.com本文链接地址:Java IO: 流

    Java IO的用途汇总:
    文件访问
    网络访问
    内存缓存访问
    线程内部通信(管道)
    缓冲
    过滤
    解析
    读写文本 (Readers / Writers)
    读写基本类型数据 (long, int etc.)
    读写对象

    1.流和数组的区别

    流和数组不一样,不能通过索引读写数据。
    在流中,你也不能像数组那样前后移动读取数据,除非使用RandomAccessFile 处理文件。
    流仅仅只是一个连续的数据流。
    流中的数据只能够顺序访问。
    某些类似PushbackInputStream 流的实现允许你将数据重新推回到流中,以便重新读取。然而你只能把有限的数据推回流中,并且你不能像操作数组那样随意读取数据。

    2.Java IO流的分类

    字节流:通常以“stream”命名,比如InputStream和OutputStream。除了DataInputStreamDataOutputStream 还能够读写int, long, float和double类型的值以外,其他流在一个操作时间内只能读取或者写入一个原始字节。

    字符流:通常以“Reader”或者“Writer”命名。字符流能够读写字符(比如Latin1或者Unicode字符【1个字符占2个字节】)。可以浏览Java Readers and Writers获取更多关于字符流输入输出的信息。

    节点流:程序用于直接操作目标设备所对应的类叫节点流。比如FileInputStream;

    处理流:程序通过一个间接流类去调用节点流类,以达到更加灵活方便地读写各种类型的数据,这个间接流类就是处理流。比如BufferedInputStream;
    https://blog.csdn.net/jingzi123456789/article/details/72123937

    输入流的基类InputStream
    输出流的基类OutputStream
    组合流BufferedIntputStream/BufferedOutputStream(提供缓存区)


    BufferedIntputStream/BufferedOutputStream 默认大小为8*1024B(8KB),为了更好地使用内置缓冲区的磁盘,同样建议把缓冲区大小设置成1024的整数倍。
    ---------------------------------------------------------------------------------------------------------------DataInputStream/DataOutputStream 读取/写入Java基本类型数据

                                          Java IO类概述表
    
    image.png
    BIO,NIO,AIO

    BIO:同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。
    NIO:同步非阻塞的I/O模型,在Java 1.4 中引入了NIO框架,对应 java.nio 包,提供了 Channel , Selector,Buffer等抽象。
    AIO (Asynchronous I/O):异步非阻塞的IO模型。异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。

    相关文章

      网友评论

          本文标题:2020-09-21 Java IO流

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