IO 流

1、Java 程序以流的方式进行输入 / 输出数据

2、Input:读取外部数据输入到程序(内存)

3、Output:将程序(内存)输出到外部数据

4、java.io 包提供流相关类、接口

 

事项

1、在 try - catch - finally 前,声明所需的流

2、IO 流的操作(包括 new)需要 try - catch - finally 捕获 IO 异常

3、finally 代码中执行关闭流的操作

(1)每次 close 操作都需要 try - catch - finally,捕获 close 可能 IO 异常,对流进行非 null 判断,再 close

(2)从上一个 close 的 finally 关闭下一个流,最后一个流的关闭不需要 finally

(3)try - catch - resource 语法糖可以解决关闭流时的冗余代码

4、指向内存的流可以不调用 close,如 ByteArrayInputStream、ByteArrayInputStream,此类流的 close 方法是空实现

5、指向硬盘 / 网络等外部资源的流一定要调用 close

 

流的分类

1、单位

(1)字节流(8 bit):操作二进制文件,保证无损

(2)字符流:操作文本文件,根据文件编码,不同字符占用不同字节

2、流向:输入流、输出流

3、角色

(1)节点流:底层流 / 低级流,直接跟数据源连接,对一个特定数据源读写数据

(2)处理流 / 包装流:使用修饰器设计模式,连接已存在的流(节点流 / 处理流),不直接与数据源连接,消除不同节点流的实现差异,提供更强大的读写功能

(3)处理流功能:增加缓冲提高输入输出效率;一次性输入输出大批量数据

抽象父类 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

(1)四种抽象父类派生 IO 流的所有类

(2)派生出的子类名称都以父类名作后缀

 

字符流

1、Reader

(1)BufferedReader

(2)InputStreamReader:FileReader

(3)StringReader

(4)ByteArrayReader

(5)PipedReader

(6)FilterReader:PushbackReader

2、Writer

(1)BufferedWriter

(2)OutputStreamWriter:FileWriter

(3)PrinterWriter

(4)StringWriter

(5)PipedWriter

(6)CharArrayWriter

(7)FilterWriter

 

字节流

1、InputStream

(1)FileInputStream

(2)FilterInputStream:BufferedInputStream、DataInputStream、PushbackInputStream

(3)ObjectInputStream

(4)PipedInputStream

(5)SequenceInputStream

(6)StringBufferInputStream

(7)ByteArrayInputStream

2、OutputStream

(1)FileOutputStream

(2)FilterOutputStream:BufferedOutputStream、DataOutputStream、PrintOutputStream

(3)ObjectOutputStream

(4)PipedOutputStream

(5)ByteArrayOutputStream

posted @   半条咸鱼  阅读(47)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示