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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战