Java之IO流基本概念

IO流

1 流的概念

在计算机中,流是个抽象的概念,是对输入输出设备的抽象。在Java程序中,对于数据的输入/输出操作,都是以"流"的方式进行

数据以二进制的形式在程序设备之间流动传输,就像水在管道里流动一样,所以就把这种数据传输的方式称之为输入流、输出流。这里描述的设备,可以是文件、网络、内存等。

流具有方向性,可以分为输入和输出。以Java程序本身作为参照点,如果数据是从程序“流向”文件,那么就是输出流,如果数据是从文件“流向”程序,那么这就是输入流。如下图:

在这里插入图片描述

注意,此处以文件进行举例,Java程序中还可以把数据写入到网络中、内存中等。

2 流的分类

Java中的IO流可以根据很多不同的角度进行划分,最常见的是以数据的流向和数据的类型来划分

数据的流向分为:

  • 输入流 :把数据从其他设备上读取到程序中的流

  • 输出流 :把数据从程序中写出到其他设备上的流

数据的类型分为:

  • 字节流 :以字节为单位(byte),读写数据的流
  • 字符流 :以字符为单位(char),读写数据的流
输入流输出流
字节流字节输入流字节输出流
字符流字符输入流字符输出流

最终分类:

  • 字节输入流,在程序中,以字节的方式,将设备(文件、内存、网络等)中的数据读进来

  • 字节输出流,以字节的方式,将数据写入到设备中

  • 字符输入流,以字符的方式,将设备中的数据读进来

  • 字符输出流,以字符的方式,将数据写入到设备中

3 流的结构

在Java中,和IO流相关的类,主要是在java.io 包下的定义的

几乎所有的流,都是派生自下面4个抽象父类:

  • InputStream,代表字节输入流类型
  • OutputStream,代表字节输出流类型
  • Reader,代表字符输入流类型
  • Writer,代表字符输出流类型

Java中常用流及其继承结构:

在这里插入图片描述

注意:一般情况下,一个流会具备最起码的三个特点:

  • 输入还是输出
  • 字节还是字符
  • 流的目的地

流的目的地:如果是输入流,表示这个流从什么地方读数据;如果是输出流,表示这个流把数据写到什么地方!根据这个规律,再来查看上面的流的关系结构图,就会更加清楚了。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值