news 2026/4/28 2:52:38

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/23 22:23:26

Qwen2.5-1.5B开源大模型教程:模型文件校验、SHA256完整性验证步骤

Qwen2.5-1.5B开源大模型教程:模型文件校验、SHA256完整性验证步骤 1. 为什么模型文件校验如此重要? 当你从网上下载一个大型文件,比如一部电影或者一个软件安装包,最怕的是什么?是下载到一半断线,还是文件…

作者头像 李华
网站建设 2026/4/26 0:14:30

深度学习项目训练环境:5分钟完成完整环境配置

深度学习项目训练环境:5分钟完成完整环境配置 你是否还在为每次新项目都要重装CUDA、PyTorch、cuDNN而头疼?是否在深夜调试环境时反复遭遇ImportError: libcudnn.so not found或torch.cuda.is_available() returns False?是否因为版本不兼容…

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

InstructPix2Pix与Token机制结合的安全图像处理

InstructPix2Pix与Token机制结合的安全图像处理 想象一下,你搭建了一个很酷的AI修图服务,用户只要说句话,就能把照片里的蓝天换成晚霞,或者给人物加上墨镜。用的人多了,问题也来了:有人滥用服务生成不合适…

作者头像 李华
网站建设 2026/4/23 15:17:38

AI读脸术避坑指南:模型持久化与系统盘部署实战教程

AI读脸术避坑指南:模型持久化与系统盘部署实战教程 1. 项目简介与核心价值 今天要跟大家分享一个特别实用的AI项目——AI读脸术,它能自动识别照片中人物的性别和年龄段。这个项目基于OpenCV的深度神经网络(DNN)构建,…

作者头像 李华