Java字符读取类

1. 菜鸟级:FileReader(傻瓜相机)

  • 怎么用

FileReader reader = new FileReader("日记.txt"); // 直接读文件
int ch;
while ((ch = reader.read()) != -1) { 
    System.out.print((char)ch); // 一个字一个字读
}
  • 特点
    → 最简单的读文件方式
    → 但默认用系统编码(比如Windows中文版用GBK,Mac用UTF-8)
    → ❌ 文件编码和系统不一致时,会乱码(比如用GBK打开UTF-8文件)

  • 场景:临时读个小文件,且确定编码没问题时用

  • 曼波吐槽:就像用默认美颜滤镜拍照,翻车率50%!(╯▽╰ )


2. 防乱码神器:InputStreamReader(翻译官)

  • 怎么用

    // 指定用UTF-8编码读取文件 
    InputStreamReader reader = new InputStreamReader(
     new FileInputStream("日记.txt"),
     "UTF-8" // 明确告诉它用什么语言翻译 
    ); 

  • 特点
    → 可以手动指定编码(专治各种乱码)
    → 需要配合FileInputStream(字节流)使用
    → 依然建议套个BufferedReader加速(见下文)

  • 场景:读中文文件、爬虫处理不同编码的网页

  • 曼波比喻:像带了个翻译官,把乱码字母变成正确文字!(๑•̀ㅂ•́)و✧


3. 加速神器:BufferedReader(搬运工的小推车)

  • 怎么用

    BufferedReader reader = new BufferedReader(
        new FileReader("日记.txt") // 可以套在任何Reader外面
    );
    String line;
    while ((line = reader.readLine()) != null) { 
        System.out.println(line); // 一次读一整行!
    }
    

  • 特点
    → 自带缓冲区(默认8KB),减少硬盘读取次数
    → 有readLine()方法,读小说、日志超方便
    → 性能提升明显(尤其读大文件时)

  • 场景:读小说、日志文件等文本内容

  • 曼波小剧场:没有小推车时搬运工要跑100次,有了小推车一次搬一车!(≧∇≦)ノ


4. 内存杀手:StringReader(照镜子)

  • 怎么用

    String content = "你好呀~";
    StringReader reader = new StringReader(content); // 把字符串当文件读
    

  • 特点
    → 不用读文件,直接操作字符串
    → 适合把字符串伪装成"文件"来处理

  • 场景:测试时代替真实文件、处理内存中的字符串

  • 曼波比喻:就像对着镜子里的自己说话,不用找真人~(◕ᴗ◕✿)


选谁?看场景!

场景推荐工具举个栗子🌰
快速读小文件(无中文)FileReader读英文配置文件
读含中文的文件InputStreamReader + 指定编码读UTF-8编码的小说
读大文件BufferedReader + InputStreamReader分析10GB的日志文件
处理字符串StringReader单元测试中模拟文件内容

超重要小贴士

  1. 关水龙头!
    用完一定要.close()关闭流!或者用try-with-resources自动关:

    try (BufferedReader reader = new BufferedReader(...)) { 
        // 自动关闭,不怕忘记~
    }
    

  2. 乱码急救
    中文变问号?用InputStreamReader明确指定编码:

    new InputStreamReader(流, "GBK"); // 对付老中文文件
    

  3. 性能玄学
    读10MB以上文件时,BufferedReader比直接读快10倍不止!


曼波总结

  • 简单任务用FileReader
  • 防乱码用InputStreamReader
  • 高效读用BufferedReader
  • 其他两个(StringReader/CharArrayReader)存在感较低

脑图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值