欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Java字符读取类

Java字符读取类

2025/2/23 5:27:11 来源:https://blog.csdn.net/Eugene__Chen/article/details/145798862  浏览:    关键词: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)存在感较低

脑图

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词