
1. 字节流处理单元以字节 (byte即8位二进制数据)为单位。适用场景处理二进制数据如图片、音频、视频、压缩文件等任何文件。也可以处理文本文件但需要手动处理编码。核心抽象类InputStream输入字节流读数据OutputStream输出字节流写数据常用子类FileInputStream/FileOutputStream读写文件。BufferedInputStream/BufferedOutputStream带缓冲的字节流提升性能。ByteArrayInputStream/ByteArrayOutputStream操作内存中的字节数组。示例代码使用字节流复制图片文件javatry (FileInputStream in new FileInputStream(source.jpg); FileOutputStream out new FileOutputStream(dest.jpg)) { byte[] buffer new byte[1024]; int len; while ((len in.read(buffer)) ! -1) { out.write(buffer, 0, len); } } catch (IOException e) { e.printStackTrace(); }2. 字符流处理单元以字符 (char即16位Unicode码点)为单位。适用场景专门处理文本文件.txt.java.xml.csv等。它会自动处理字符编码如 UTF-8GBK避免乱码。核心抽象类Reader输入字符流读字符Writer输出字符流写字符常用子类FileReader/FileWriter读写文本文件注意FileWriter不能指定编码会使用系统默认编码跨平台有隐患。BufferedReader/BufferedWriter带缓冲和按行读写的功能如readLine()。InputStreamReader/OutputStreamWriter转换流连接字节流和字符流可指定字符编码。示例代码使用字符流带缓冲读取文本文件javatry (BufferedReader br new BufferedReader(new FileReader(input.txt))) { String line; while ((line br.readLine()) ! null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); }