IO(java)
IO 核心概念
Java IO(Input/Output)用于处理设备间数据传输,核心是流——数据按顺序传输的通道,分为输入流(读数据)、输出流(写数据)。
2. IO 分类
(1)按数据方向
• 输入流:从外部(文件、网络、键盘)读取数据到程序,顶层父类:InputStream(字节)、Reader(字符)
• 输出流:从程序写入数据到外部,顶层父类:OutputStream(字节)、Writer(字符)
(2)按数据单位
• 字节流:以字节(8位)为单位,处理所有类型数据(文件、图片、视频等),顶层类:InputStream、OutputStream
• 字符流:以字符(2字节,UTF-16)为单位,仅处理文本数据,顶层类:Reader、Writer(底层基于字节流,自动编码/解码)
(3)按功能
• 节点流:直接连接数据源,直接读写数据(如 FileInputStream、FileReader)
• 处理流:包装节点流增强功能(如缓冲、编码转换),不直接连接数据源(如 BufferedInputStream、InputStreamReader)
3. 核心字节流类
• FileInputStream:读取文件字节数据,关键方法:read()、read(byte[])、close()
• FileOutputStream:写入文件字节数据,关键方法:write(int)、write(byte[])、close()
• BufferedInputStream:字节缓冲输入流(提高效率),继承 InputStream 方法,新增 mark()/reset()
• BufferedOutputStream:字节缓冲输出流,继承 OutputStream 方法,flush()(强制刷新缓冲区)
4. 核心字符流类
• FileReader:读取文件字符数据,关键方法:read()、read(char[])、close()
• FileWriter:写入文件字符数据,关键方法:write(int)、write(char[])、write(String)、close()
• BufferedReader:字符缓冲输入流,关键方法:readLine()(按行读取)、close()
• BufferedWriter:字符缓冲输出流,关键方法:newLine()(换行)、flush()、close()
• InputStreamReader:字节流转字符流(编码转换),构造器可指定编码(如 UTF-8)
• OutputStreamWriter:字符流转字节流,构造器可指定编码(如 GBK)
5. 关键注意事项
• 资源关闭:流使用后必须关闭,推荐 try-with-resources(自动关闭实现 AutoCloseable 的资源)
• 缓冲流作用:减少磁盘 IO 次数,批量读写提高效率
• 编码问题:字符流默认系统编码,跨平台需显式指定编码
• 文件操作:FileOutputStream/FileWriter 构造器加 true 表示追加写入(默认覆盖)
6. NIO 简介
Java 1.4 引入 NIO(Non-blocking IO),基于通道和缓冲区,支持非阻塞 IO 和多路复用,效率更高,核心类:ByteBuffer、FileChannel、Selector(IO 为阻塞式,NIO 更适合高并发场景)
更多推荐



所有评论(0)