Java之IO流基础知识

IO流

什么是IO流? I:Input,O:Output
通过IO流可以完成以内存为参照物,对硬盘的读和写。
此图为内存和硬盘传输数据的大概图意


IO流的分类

输入流、输出流、字节流、字符流


分类方式:
  1. 按照流的方向进行分类:(以内存为参照物)
    往内存中去,叫做读(Read)或叫做输入流(Input)
    往硬盘中去,叫做写(Write)或叫做输出流(Output)

  2. 按照读取数据的方式不同进行分类:
    (1) 按照字节的方式读取数据,一次读取一个字节(byte)等同于一次读取8个二进制位。

    这种读取方式的流是万能流,什么类型的文件都可以读取,包括文本、图片、音频、视频等。
    假设文件file.txt,采用字节流的话,是这样读取的:
          file.txt文件内容:    a中国bc张三fe
          第一次读取:一个字节:正好读到'a'.
          第二次读取:一个字节:正好读到'中'字符的一半
          第三次读取:一个字节:正好读到'中'字符的另一半
          ......
    

    (2)按照字符的方式读取数据,一次读取一个字符。

    这种流是为了方便读取普通文本文件而存在的,只能读取纯文本文件
    假设文件file.txt,采用字符流的话,是这样读取的:
          file.txt文件内容:    a中国bc张三fe
          第一次读取:一个字符:正好读到'a'.
          第二次读取:一个字符:正好读到'中'
          第三次读取:一个字符:正好读到'国'
          ......
    

IO流四大家族

都是抽象类(abstract class),无法实例化对象

java.io.InputStream 字节输入流
java.io.OutputStream 字节输出流
java.io.Reader 字符输入流
java.io.Writer 字符输出流

注意:

  • 在Java中只要"类名"以"Stream"结尾的,都是字节流,
    以"Reader/Writer"结尾的,都是字符流

  • 所有的流都是实现了java.io.Closeable接口,都有close()方法,是可关闭的.
    * 流毕竟是一个连接内存和硬盘之间的通道,
    用完之后一定要关闭,不然会消耗(占用)很多资源.

  • 所有的输出流都实现了java.io.Flushable接口,都有flush()方法,是可刷新的.
    * 养成好习惯,输出流在最终输出之后,一定要记得flush()刷新,
    刷新表示将通道当中剩余未输出的数据强行输出完(清空管道).
    * 如果没有flush()可能会导致数据的丢失.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值