(每日持续更新)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

相关文章

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2