亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java InputStreamReader 详解:字节流转字符流、编码处理与实战示例

Java InputStreamReader 详解

InputStreamReader 位于 java.io,将原始字节转为字符,是读取文本文件、网络流或任何字节源表示字符的关键桥梁。

继承抽象 Reader,连接字节流(如 FileInputStream)与字符流。

当字符需多字节表示(如 UTF-8、UTF-16 编码文本),InputStreamReader 将这些字节组合读取并产生正确字符。


创建 InputStreamReader

导入必要类:

import java.io.InputStreamReader;

典型实例化用 FileInputStream 作为底层字节源:

FileInputStream file = new FileInputStream("example.txt");
InputStreamReader reader = new InputStreamReader(file);

若知文件编码,指定以避免误读:

InputStreamReader reader = new InputStreamReader(file, Charset.forName("UTF-8"));

用 Charset 保证按预期字符集解读字节。


InputStreamReader 核心方法

read()

示例:读文本文件到字符数组。

import java.io.*;
class Main {
    public static void main(String[] args) {
        char[] buffer = new char[100];
        try (FileInputStream file = new FileInputStream("input.txt");
             InputStreamReader reader = new InputStreamReader(file)) {
            reader.read(buffer);
            System.out.println("Data in the stream:\n" + new String(buffer));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

输出

Data in the stream: This is a line of text inside the file.

getEncoding()

获取读取器使用的编码:

InputStreamReader defaultReader = new InputStreamReader(file);
InputStreamReader utf8Reader = new InputStreamReader(file, Charset.forName("UTF-8"));
System.out.println("Default encoding: " + defaultReader.getEncoding());
System.out.println("UTF-8 encoding: " + utf8Reader.getEncoding());

输出

Default encoding: Cp1252
UTF-8 encoding: UTF-8

未指定编码时,getEncoding() 返回平台默认字符集。

注意: 显式编码用 Charset.forName()。详见 Java Charset 文档。


close()

使用后始终关闭 reader。上述 try-with-resources 自动处理,也可显式调 reader.close()。


其他实用方法

方法描述
ready()检查流是否准备好读取
mark(int readAheadLimit)标记当前位置供后续重置
reset()回到最后标记位置

完整参考访问官方 InputStreamReader 页面。

java

  1. 深入理解 Java final 关键字:变量、方法与类的不可变性
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  5. 精通 Java 匿名内部类:定义、语法与实战示例
  6. Java 单例模式详解:安全实现与使用指南
  7. 精通 Java 反射:运行时检查类、方法与字段
  8. 精通 Java ArrayList:操作、方法与最佳实践
  9. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  10. 掌握 Java Scanner:读取文本、数字与复杂类型的综合指南
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除