【Java学习笔记】InputStreamReader的理解

article/2025/9/21 3:45:57

一、InputStreamReader类

API文档说明:InputStreamReader类是从字节流到字符流的桥接器:它使用指定的字符集读取字节并将它们解码为字符。 它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。每次调用一个InputStreamReader的read()方法都可能导致从底层字节输入流中读取一个或多个字节。 为了实现字节到字符的有效转换,可以从基础流中提取比满足当前读取操作所需的更多字节。为了获得最高效率,请考虑在BufferedReader中包装InputStreamReader

如何理解InputStreamReader是字节流到字符流的桥接器?
1、计算机存储的单位是字节,如尽管txt文本中有中文汉字这样的字符,但是对计算机而言,其是字节形式存在的
2、如果使用字符流读取一个utf-8的文件,会默认使用gbk码表将其转换为字符
3、字节本质是8个二进制位,且不同的字符集对同一字节解码后的字符结果是不同的,因此在读取字符时务必要指定合适的字符集,否则读取的内容会产生乱码
4、 那么就需要一个流把字节流读取的字节进行缓冲而后在通过指定字符集解码成字符返回,因而形式上看是字符流
5、InputStreamReader流就是起这个作用,实现从字节流到字符流的转换
如何理解read()方法都可能导致从底层字节输入流中读取一个或多个字节?
read()方法会尝试尽量从底层字节流中读取2个字符到字符缓冲区中,注意这里是尽量,若遇到文件最后字符,则就只能读取到1个字符,因此每次read()方法读取的字节数是不定的
InputStreamReader类与FileReader类的关系
1、FileReader类仅仅是InputStreamReader的简单衍生并未扩展任何功能
2、FileReader类读取数据实质是InputStreamReader类在读取,而InputStreamReader读取数据实际是StreamDecoder类读取

如果还是不能理解“桥梁”,那么柔和一下OutStreamWriter。简而言之,OutStreamWritter – 将输出的字符流 ---- > 字节流 —> 用于输出到控制台 或者 文件 – 注意这个是写 ====输出的是来源,形容词,正常理解的字符输出流转字节输出流
InputStreamReade – 将输入的字节流 -----> 字符流 ---->用于读取到控制台 或 内存 – 注意这个是读 ====输入的是来源,形容词,正常理解的字节输入流转字符输入流

二、图例

在这里插入图片描述

三、代码示例

		//初级版//inputstream:将字节流转换为字符流的桥梁InputStreamReader isr = new InputStreamReader(new FileInputStream("utf-8.txt"), "utf-8");//使用指定码表//outputstream:将字符流转换为字节流的桥梁OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt"),"gbk");int c;while((c = isr.read()) != -1) {osw.write(c);}isr.close();osw.close();
		//升级版BufferedReader br = 									//高效的用指定的编码表读new BufferedReader(new InputStreamReader(new FileInputStream("utf-8.txt"), "UTF-8"));BufferedWriter bw = 									//高效的用指定的编码表写new BufferedWriter(new OutputStreamWriter(new FileOutputStream("gbk.txt"), "GBK"));int ch;while((ch = br.read()) != -1) {bw.write(ch);}br.close();bw.close();

http://chatgpt.dhexx.cn/article/XannFGVF.shtml

相关文章

InputStreamReader介绍使用

InputStreamReader类: java.io.InputStreamReader extends Reader InputStreamReader:是字节流通向字符流的桥梁:他使用指定的charset读取字节并将其解码为字符。(解码:把看不懂的变为能看懂的) 继承自父类的共性成员方法:int r…

jconsole工具监测jvm

背景 本篇文章为了记录如何使用jconsole工具。 jconsole工具使用环境是windows,监控服务端在linux上。 如何启动jconsole 找到你本地jdk的目录,进入bin目录,找到jconsole.exe程序双击启动即可 本地进程 如果是想调试本地程序的话&#xf…

jconsole远程连接服务器失败,提示“连接失败:是否重试“

操作步骤: 运行程序的时候加上参数: -Djava.rmi.server.hostname****** -Dcom.sun.management.jmxremotetrue -Dcom.sun.management.jmxremote.port9991 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse 服务器打开端口:效果就…

java jconsole 远程连接_jconsole连接远程tomcat

咱们先说怎么做,然后再聊聊一些原理,当然,本人技术能力有限,有错误的地方,欢迎指正。 1.本机环境,远程环境 本机环境:windows 7 java version "1.8.0_121" 远程环境:centos 6.5 java…

jconsole远程连接的使用

背景 在项目做性能压测的时候,对程序进行分析,需要用到jconsole工具,以前都没用过,学习了一下 连接步骤 1. 打开工具 打开jdk安装目录 -> bin ,找到jconsole.exe 双击打开 2. 到服务器中,加入以下…

简单使用Jconsole

引言 本文简单介绍Jconsole,死锁用例测试分析线程 正文 测试用例 DeadLockDemo : public class DeadLockDemo {private static Object resource1 new Object();//资源 1private static Object resource2 new Object();//资源 2public static void…

linux jconsole 监控jvm,JVM监测分析JConsole

一、基本操作 启动界面 1.JConsole是什么 从Java 5开始引入了JConsole。JConsole是一个内置Java性能分析器,可以从命令行或在GUI shell中运行。您可以轻松地使用JConsole(或者,它更高端的“近亲” VisualVM)来监控Java应用程序性能和跟踪Java中的代码。 …

Java应用程序监控之 jconsole

jconsole jconsole 启动一个图形控制台,使您可以监视和管理Java应用程序。JConsole图形用户界面是一个符合Java Management Extensions(JMX)规范的监视工具。JConsole使用Java虚拟机(Java VM)的广泛工具来提供有关Jav…

JConsole远程监控配置

首先,看本机(Windows)安装了JRE没 Win 》 CMD 打开命令窗口 如有安装,则会显示以下版本信息;若没有显示,就安装吧 1 C:\Users\Administrator>java -version 2 java version "1.8.0_111" 3 …

jconsole连接失败:是否重试?

背景 在学习使用jconsole的时候,按照大佬们的教程一步一步操作的,到了连接的时候却一直报这个错误,连接不上远程服务,百度了很久也没有相关的说明,都是让添加那些启动参数,问题是启动参数我早就添加了。。…

JConsole详解

一、JConsole是什么 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。 二、如何启动JConsole 如…

Jconsole小记

今天在看jmeter相关的文章时,看到了这个,网上查看了一些相关的博客,虽然现在还不做性能方面的,先记录下来以便日后查看。 Jconsole,Java Monitoring and Management Console。 Jconsole是JDK自带的监控工具&#xff…

jconsole使用

目的: 为了检查一个经常会跑死的java程序,在网上查询了下, 觉得jconsole这个工具还不错,所以就部署了一把 一、服务器端部署 首先在服务器端,启动你要监控的java程序,我的启动脚本如下: /ho…

java jconsole_jconsole与jvisualvm

jvisualvm同jconsole都是一个基于图形化界面的、可以查看本地及远程的JAVA GUI监控工具,可以认为jvisualvm是jconsole的升级版,因此这里不再介绍jconsole,只介绍jvisualvm。jvisualvm是一个综合性的分析工具,可以认为其整合了jstack、jmap、jinfo等众多调试工具的功能,并以…

JConsole工具使用

转自:https://www.cnblogs.com/baihuitestsoftware/articles/6405580.html#top Jconsole,Java Monitoring and Management Console。Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM&#xff…

Jconsole

JConsole有界面,能够比较方便地看到堆内存 \线程\类,以及JMX的变化. 线下环境中算是个不错的诊断工具. 那怎么操作呢? 十分简单, 本地的JDK安装路径中找到 jConsole.exe ,双击,填写远程JVM进程即可. 要注意: JConsole使用时要求远程JVM打开了 JMX 端口, JMX端口和服务端口是…

完全体,千字详解:“Java性能调优六大工具”之JConsole工具

JConsole工具是JDK自带的图形化性能监控工具。 通过JConsole工具, 可以查看Java应用程序的运行概况, 并监控堆信息、 永久区使用情况及类的加载情况等。 本文主要介绍JConsole工具的基本使用方法。 一,JConsole连接Java程序 JConsole程序在%JAVA_HOME%/bin目录下,启动…

JConsole使用教程

JConsole是一个Java虚拟机的监控和管理工具,可以监控Java应用程序的内存使用、线程和类信息等。 以下是JConsole的使用教程: 1.启动JConsole JConsole是一个Java自带的工具,可以在bin目录下找到jconsole.exe文件。双击运行该文件即可启动JC…

深入理解Java虚拟机——可视化监控工具(Jconsole)

目录 一、可视化监控工具(Jconsole)的作用二、可视化监控工具(Jconsole)的使用三、测试实例四、修改测试实例代码 一、可视化监控工具(Jconsole)的作用 内存监控线程监控 二、可视化监控工具(…

深入理解java虚拟机(十)JConsole:Java监视与管理控制台

文章目录 一、JConsole介绍二、启动JConsole三、内存监控四、线程监控结尾 一、JConsole介绍 JConsole( Java Monitoring and Management Console)是一款基于JMX( Java Manage-ment Extensions)的可视化监视、管理工具。它的主要…