IO流概述

概念

内存与存储设备之间传输数据的通道。(用程序读取,处理硬盘,u盘中的数据)

水借助管道传输,数据借助流传输。

通过IO可以完成对文件的读和写

以程序(代码)为中心,进来为输入,出去为输出

read input inputstream

write output outputstream

核心类

java.io包中最重要的是五个类三个接口。

File 文件类

InputStream 字节输入流

OutputStream 字节输出流

Reader 字符输入流

Writer 字符输出流

Closeable 关闭流接口

Flushable 刷新流接口

Serializable 序列化接口

分类

按方向:

输入流:

存储设备中的内容读取内存中input

输出流:

内存中的内容写入储存设备中output

以内存为参照,进内存为输入,出内存为输出。

按读取数据方式不同:

字节流:

一次读取一个字节byte,等同于一次读取8个二进制位。这种流是万能的。什么字节的文件都可以读取,包括文本,图片,视频,声音

例:file.txt

a一b二c三

第一次读取:a

第二次:读到一的一半

第三次:读一的另外一半

字符流:

一次读取一个字符,方便读取普通文本文件而存在的。只能读取纯文本文件txt

word文件不是普通文档。

例:file.txt

a一b二c三

第一次读取:a 一个字节

第二次读取:一 两个字节

a在win系统中是一个字节,在java中占两个字节

a是文件中的字符,所以占一个字节

以字符为单位,只能读写文本数据

底层还是基于字节流操作,内部自动搜寻了指定的码表。

按功能

节点流(底层流):

具有实际传输数据的读写功能

过滤流:

在节点流的基础之上增强功能

小结

java中的io流都已经写好了,程序员不需要关心。需要掌握,在java中已经提供了哪些流,每个流的特点是什么,每个流对象上的常用方法有哪些。

java中所有的流都在java.io.*下。

java中主要研究:怎么new流对象,调用流对象的哪个方法是读,哪个方法是写。

java io四大家族

四大家族的首领,是四个抽象类

java.io.InputStream 字节输入流

java.io.OutputStream 字节输出流

java.io.Reader 字符输入流

java.io.Writer 字符输出流

注意:

在java中 只要 类名 以stream结尾的都是字节流,以reader/writer结尾的都是字符流

共同点:

close()

所有的流都实现了java.io.closeable,都是可关闭的,都有close()方法

​ 流是一个内存和硬盘之间的管道,用完之后要关闭,不然会耗费很多资源。

flush()

所有的输出流都实现了java.io.Flushable接口,都有flush()方法,用完输出流的时候一定要记得flush刷新一下。这个刷新表示将通道/管道中剩余未输出的数据强行输出完(清空管道。)刷新的作用就是清空管道。

如果没有flush,可能会导致丢失数据。

java.io包下需要掌握的流(16个)

  • file(文件)

    • java.io.FileInputStream
    • java.io.FileOutoutStream
    • java.io.FileReader
    • java.io.FileWriter
  • 转换流(将字节流转换为字符流)

    • java.io.InputStreamReader
    • java.io.OutputStreamReader
  • buffered(缓冲流专属)

    • java.io.BufferedInputStream
    • java.io.BufferedOutputStream
    • java.io.BufferedReader
    • java.io.BufferedWriter
  • data(数据)

    • java.io.DataInputStream
    • java.io.DataOutputStream
  • 标准输出流

    • java.io.PrintWriter
    • java.io.PrintStream
  • 对象专属流

    • java.io.ObjectInputStream
    • java.io.ObjectOutputStream

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值