news 2026/6/10 17:39:50

java基础-Reader类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java基础-Reader类

1.Reader 类概述

Reader是一个抽象类,用于读取字符流。与InputStream(字节流)不同,Reader专门处理字符(16位 Unicode 字符)。

public abstract class Reader implements Readable, Closeable

2.主要子类

常用实现类:

  • FileReader- 读取文件字符流

  • StringReader- 从字符串读取

  • CharArrayReader- 从字符数组读取

  • InputStreamReader- 字节流到字符流的桥梁

  • BufferedReader- 带缓冲的读取器(最常用)

3.核心方法

基本读取方法:

// 读取单个字符 public int read() throws IOException // 读取到字符数组 public int read(char[] cbuf) throws IOException // 读取到字符数组的指定部分 public abstract int read(char[] cbuf, int off, int len) throws IOException // 跳过指定数量的字符 public long skip(long n) throws IOException // 检查是否支持标记 public boolean markSupported() // 标记当前位置 public void mark(int readAheadLimit) throws IOException // 重置到标记位置 public void reset() throws IOException // 关闭流 public abstract void close() throws IOException

4.使用示例

示例 1:使用 FileReader

import java.io.FileReader; import java.io.IOException; public class ReaderExample { public static void main(String[] args) { try (FileReader reader = new FileReader("file.txt")) { int character; while ((character = reader.read()) != -1) { System.out.print((char) character); } } catch (IOException e) { e.printStackTrace(); } } }

示例 2:使用 BufferedReader(推荐)

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class BufferedReaderExample { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader( new FileReader("file.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }

示例 3:使用 StringReader

import java.io.StringReader; import java.io.IOException; public class StringReaderExample { public static void main(String[] args) { String data = "Hello, World!"; try (StringReader reader = new StringReader(data)) { char[] buffer = new char[5]; int charsRead; while ((charsRead = reader.read(buffer)) != -1) { System.out.println(new String(buffer, 0, charsRead)); } } catch (IOException e) { e.printStackTrace(); } } }

5.使用模式

模式 1:传统的 try-catch-finally

Reader reader = null; try { reader = new FileReader("file.txt"); // 读取操作 } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } }

模式 2:try-with-resources(Java 7+,推荐)

try (Reader reader = new FileReader("file.txt")) { // 自动关闭资源 // 读取操作 } catch (IOException e) { e.printStackTrace(); }

6.最佳实践

  1. 总是使用缓冲:使用BufferedReader包装其他 Reader 以提高性能

    BufferedReader bufferedReader = new BufferedReader(reader);
  2. 指定字符编码:使用InputStreamReader明确指定字符集

    Reader reader = new InputStreamReader( new FileInputStream("file.txt"), StandardCharsets.UTF_8 );
  3. 使用 try-with-resources:确保资源正确关闭

  4. 批量读取:使用字符数组进行批量读取,而不是单个字符

    char[] buffer = new char[1024]; int charsRead; while ((charsRead = reader.read(buffer)) != -1) { // 处理 buffer 中的数据 }

7.与 InputStream 的区别

  1. 特性Reader(字符流)InputStream(字节流)
    数据单位字符(16位)字节(8位)
    编码处理自动处理字符编码不处理字符编码
    主要用途文本文件读取二进制文件读取
    典型实现FileReader, StringReaderFileInputStream, ByteArrayInputStream

    8.常见应用场景

  2. 读取文本文件

  3. 处理用户输入

  4. 解析配置文件

  5. 读取网络数据(结合 InputStream)

  6. 字符串处理

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:50:05

Fish Speech 1.5 Web界面功能详解:参考音频上传+高级参数可视化设置

Fish Speech 1.5 Web界面功能详解:参考音频上传高级参数可视化设置 1. 认识Fish Speech 1.5语音合成平台 Fish Speech 1.5是由Fish Audio团队开发的先进文本转语音模型,它采用了创新的VQ-GAN和Llama架构,在超过100万小时的多语言音频数据上进…

作者头像 李华
网站建设 2026/6/10 13:35:06

MTools小白必看:动态Prompt工程让文本处理更智能

MTools小白必看:动态Prompt工程让文本处理更智能 1. 为什么你需要MTools——告别复制粘贴的文本处理时代 你有没有过这样的经历: 读完一篇3000字的技术文档,却要花10分钟手动提炼重点?收到客户发来的长邮件,想快速抓…

作者头像 李华
网站建设 2026/6/10 14:44:58

NVIDIA Profile Inspector深度优化指南:释放显卡潜能的技术探索

NVIDIA Profile Inspector深度优化指南:释放显卡潜能的技术探索 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 引言:解锁显卡隐藏性能的钥匙 你是否曾遇到这样的困惑&#xff…

作者头像 李华
网站建设 2026/6/10 4:05:04

简单三步:用Qwen-Ranker Pro优化搜索结果

简单三步:用Qwen-Ranker Pro优化搜索结果 1. 理解搜索优化的核心问题 你有没有遇到过这样的情况:在搜索引擎里输入一个问题,返回的结果看起来相关,但仔细一看却发现根本不是你要的答案?或者在一个企业内部知识库中搜…

作者头像 李华
网站建设 2026/6/10 14:52:50

Qwen3-TTS-12Hz-1.7B-VoiceDesign语音情感识别增强方案

Qwen3-TTS-12Hz-1.7B-VoiceDesign语音情感识别增强方案效果展示 1. 听见情绪:当AI语音真正开始“有感而发” 你有没有试过听一段AI生成的语音,明明内容准确,却总觉得少了点什么?那种微妙的停顿、语气的起伏、情绪的流转——就像…

作者头像 李华