(每日持续更新)jdk api之Reader基础、应用、实战

2024-03-10 10:44

本文主要是介绍(每日持续更新)jdk api之Reader基础、应用、实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿,每天都会整理到12点,为了就是能让大家能够真正了解该技术栈的真正原理,最终从程序员成为一名真正的架构师,写的不一定是全站做好的,但是是全站最用心的~。

以后我会推出一些列的文章,每天都会更新,每天进步一点点,发布顺序【java的api基础、应用、实战】->【java开源技术栈及源码分析】->【java开源技术栈整合】->【java低代码开发平台的建设】

关注【架构师成长之道】 输入“java基础课程”,即可免费获得全套架构师全套课程

1.65 Reader

基础

在 Java 中,Reader 是一个抽象类,用于读取字符流。以下是 Reader 的属性、构造方法、常用方法和一个简单的例子:

属性:

  • lock:用于控制对 Reader 的访问的对象。

构造方法:

  • protected Reader():构造一个新的 Reader。

常用方法:

  • int read():读取单个字符并返回其 Unicode 值。

  • int read(char[] cbuf):读取字符到数组,并返回读取的字符数。

  • int read(char[] cbuf, int off, int len):从给定的偏移量开始将字符读入数组,并返回读取的字符数。

  • void close():关闭流并释放与之关联的所有系统资源。

简单的例子:

javaCopy code
import java.io.*;
​
public class ReaderExample {public static void main(String[] args) {try {// 创建一个新的文件读取器Reader reader = new FileReader("example.txt");
​// 读取单个字符int charCode = reader.read();System.out.println("读取的字符: " + (char) charCode);
​// 读取字符数组char[] buffer = new char[1024];int numCharsRead = reader.read(buffer);System.out.println("读取的字符数: " + numCharsRead);
​// 关闭文件读取器reader.close();} catch (IOException e) {System.out.println("发生IO异常:" + e.getMessage());}}
}

在这个简单的例子中,我们使用 FileReader 创建了一个 Reader 对象,然后使用 read() 方法读取单个字符和字符数组。最后,我们调用 close() 方法关闭了流。

应用场景:

Reader 类主要用于读取字符流,因此适用于许多与文本数据相关的应用场景。以下是一些常见的应用场景及对应的代码实现示例:

  1. 读取文本文件内容并显示:

javaCopy code
import java.io.*;
​
public class ReadTextFileExample {public static void main(String[] args) {try {Reader reader = new FileReader("example.txt");BufferedReader bufferedReader = new BufferedReader(reader);String line;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}bufferedReader.close();} catch (IOException e) {e.printStackTrace();}}
}
  1. 读取网络资源的文本内容:

javaCopy code
import java.io.*;
import java.net.*;
​
public class ReadFromURLExample {public static void main(String[] args) {try {URL url = new URL("https://www.example.com");BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}reader.close();} catch (IOException e) {e.printStackTrace();}}
}
  1. 从标准输入读取用户输入:

javaCopy code
import java.io.*;
​
public class ReadFromStdinExample {public static void main(String[] args) {try {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("请输入您的姓名:");String name = reader.readLine();System.out.println("您好," + name + "!");reader.close();} catch (IOException e) {e.printStackTrace();}}
}
  1. 解析配置文件:

javaCopy code
import java.io.*;
import java.util.*;
​
public class ParseConfigFileExample {public static void main(String[] args) {try {Properties properties = new Properties();Reader reader = new FileReader("config.properties");properties.load(reader);String server = properties.getProperty("server");String port = properties.getProperty("port");System.out.println("Server: " + server);System.out.println("Port: " + port);reader.close();} catch (IOException e) {e.printStackTrace();}}
}

这些示例展示了 Reader 类在不同应用场景下的使用,包括读取文件内容、读取网络资源、读取用户输入以及解析配置文件等。

实战例子:

假设我们要实现一个简单的文本文件搜索工具,用户可以输入关键字,程序会搜索指定目录下的所有文本文件,并输出包含关键字的文件名和所在行数。我们可以使用 Reader 来读取文件内容,并进行搜索。以下是一个项目实战的示例代码:

javaCopy code
import java.io.*;
import java.util.*;
​
public class TextFileSearchTool {public static void main(String[] args) {try {Scanner scanner = new Scanner(System.in);System.out.print("请输入要搜索的关键字: ");String keyword = scanner.nextLine();System.out.print("请输入要搜索的目录路径: ");String directoryPath = scanner.nextLine();
​File directory = new File(directoryPath);if (!directory.isDirectory()) {System.out.println("指定的路径不是一个有效的目录!");return;}
​searchFiles(directory, keyword);} catch (IOException e) {e.printStackTrace();}}
​private static void searchFiles(File directory, String keyword) throws IOException {File[] files = directory.listFiles();if (files != null) {for (File file : files) {if (file.isDirectory()) {searchFiles(file, keyword); // 递归搜索子目录} else if (file.getName().toLowerCase().endsWith(".txt")) {searchFile(file, keyword); // 搜索文本文件}}}}
​private static void searchFile(File file, String keyword) throws IOException {System.out.println("正在搜索文件: " + file.getAbsolutePath());BufferedReader reader = new BufferedReader(new FileReader(file));String line;int lineNumber = 0;while ((line = reader.readLine()) != null) {lineNumber++;if (line.toLowerCase().contains(keyword.toLowerCase())) {System.out.println("在文件 " + file.getName() + " 的第 " + lineNumber + " 行找到关键字: " + keyword);}}reader.close();}
}

这个简单的文本文件搜索工具允许用户输入要搜索的关键字和要搜索的目录路径,然后程序会搜索指定目录下的所有文本文件,并输出包含关键字的文件名和所在行数。

 

 

这篇关于(每日持续更新)jdk api之Reader基础、应用、实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/793983

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2