news 2026/4/25 8:28:47

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/4/22 22:52:19

GLM-4-9B-Chat-1M惊艳效果展示:大海捞针实验与LongBench-Chat真实评测

GLM-4-9B-Chat-1M惊艳效果展示:大海捞针实验与LongBench-Chat真实评测 1. 模型能力全面解析 GLM-4-9B-Chat-1M是智谱AI推出的新一代预训练模型,在多个维度展现出卓越性能。这个模型最令人印象深刻的是支持高达1M的上下文长度,相当于约200万…

作者头像 李华
网站建设 2026/4/23 4:55:07

Hunyuan-MT-7B优化升级:如何提升翻译速度和准确率

Hunyuan-MT-7B优化升级:如何提升翻译速度和准确率 1. 理解Hunyuan-MT-7B的核心优势 Hunyuan-MT-7B是腾讯混元团队推出的专业翻译大模型,拥有70亿参数规模,在多语言翻译领域表现出色。这个模型最引人注目的特点是其在WMT25比赛中的卓越表现—…

作者头像 李华
网站建设 2026/4/21 15:18:35

AI原生语音合成:技术优势与市场潜力

AI原生语音合成:技术优势与市场潜力 关键词:AI原生语音合成、TTS(文本转语音)、神经声码器、自然语言处理、多模态交互、个性化语音、智能语音市场 摘要:本文将带你走进“AI原生语音合成”的世界——一项用人工智能直接…

作者头像 李华
网站建设 2026/4/22 9:30:53

【仅限首批内测伙伴】:Seedance2.0.3私有化专属内存精简补丁包(含off-heap缓存压缩算法),实测P99延迟↓31%,内存Footprint↓55%

第一章:Seedance2.0私有化部署内存占用调优Seedance2.0在私有化部署场景下,常因默认JVM配置与容器资源限制不匹配,导致OOM频发或GC压力过高。调优核心在于精准识别内存瓶颈组件(如实时流处理引擎、向量索引服务、元数据缓存层&…

作者头像 李华
网站建设 2026/4/24 7:23:18

资源智能解析:提升文件分享效率的效率提升指南

资源智能解析:提升文件分享效率的效率提升指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在当今数字化协作环境中,资源智能解析技术正成为提升工作效率的关键工具。无论是学术研究中的文献共享、企…

作者头像 李华
网站建设 2026/4/24 8:12:08

Fish Speech 1.5GPU算力适配方案:A10/A100/V100显存占用与并发性能实测

Fish Speech 1.5 GPU算力适配方案:A10/A100/V100显存占用与并发性能实测 Fish Speech 1.5 作为新一代文本转语音模型,凭借其零样本语音克隆和跨语言合成能力,在内容创作、智能交互等领域展现出巨大潜力。然而,在实际部署中&#…

作者头像 李华