java流概述

来源:互联网 发布:openwrt防网络尖兵 编辑:程序博客网 时间:2024/05/19 21:00

1:流是什么呢?

  流是一个很形象的概念,简单来说呢,大部分的应用程序都需要接受某种形式的数据输入,并产生某种形式的数据输出。当需要读入数据的时候,就会开启一个通向数据源的流,同样当需要写出数据的时候,也会开启一个通向目的地的流。而这种数据源可以是内存,文件或网络连接。数据就像是会流动一样,从一个地方流向另一个地方。可知,流就是在管道中的数据。为了对数据进行输入输出操作,java把不同的输入输出源(键盘,文件,网络连接等)抽象表示为流。
  
2:流的分类。

  1. 输入流和输出流
    按照流向来分,可以分为输入流和输出流
      输入流:只能从中读取数据,而不能向其写入数据;基本上是从磁盘文件到系统内存。
      输出流:只能向其写入数据,而不能从中读取数据;基本上是从系统内存到磁盘文件。
    Java的输入流主要由InputStream和Reader作为基类,而输出流则主要由OutputStream和Writer作为基类。他们都是一些抽象基类,能直接创建实例对象。
  2. 字节流与字符流
    按照处理数据的单位不同分,可以分为字节流与字符流
      字节流:字节流操作的数据单元是8位的字节(1byte=8bit)。
      字符流:字符流操作的数据单元是16位的字符(1char = 2byte = 16bit)。
    字节流主要由InputStream和OutStream作为基类,字符流主要由Reader和Writer作为基类。
  3. 节点流和处理流
    按照功能的不同分,分节点流和处理流
      节点流:节点流是直接从一个源读写数据的流(这个流没有经过包装和修饰),
      处理流:处理流是在对节点流封装的基础上的 一种流,
    FileInputStream是一个节点流,可以直接从文件读取数据,但是BufferedInputStream可以包装 FileInputStream,使得其有缓冲功能。

3:流的结构
这里写图片描述