Java 中的输入流和字符串转换315


在 Java 中,输入流是一种用于从数据源读取数据的抽象类。其中一个常用的输入流是字符串输入流,它允许您从 String 对象中读取数据。本篇文章将深入探讨 Java 中的输入流,并演示如何使用字符串输入流读取和转换字符串。

InputStream 类

InputStream 是 包中的一个抽象类,它定义了从数据源读取数据的基本操作。此类提供了一组方法来读取原始字节、字节数组以及从流中标记数据的位置。InputStream 的一些常用子类包括 FileInputStream、ByteArrayInputStream 和 StringInputStream。

StringInputStream 类

StringInputStream 是 InputStream 的一个具体实现,它允许您从字符串中读取数据。您可以使用 StringInputStream(String str) 构造函数创建一个 StringInputStream 对象,其中 str 是要从中读取数据的字符串。创建输入流后,您可以使用以下方法从字符串中读取数据:
read():从流中读取下一个字节
read(byte[] b):将字节读入指定的字节数组
skip(long n):跳过流中的 n 个字节

将 String 转换为 InputStream

可以通过使用构造函数 StringInputStream(String str) 将 String 转换为 InputStream。以下示例演示了如何执行此操作:
String str = "Hello, world!";
InputStream inputStream = new StringInputStream(str);

从 InputStream 转换回 String

要从 InputStream 转换回 String,可以使用以下方法之一:
使用 Scanner:您可以使用 Scanner 类从输入流中读取字符串。以下示例演示了如何使用 Scanner 转换输入流回字符串:
Scanner scanner = new Scanner(inputStream);
String convertedString = ();

使用 ByteArrayOutputStream: 您可以使用 ByteArrayOutputStream 将输入流中的字节捕获到字节数组中,然后使用 String(byte[] bytes) 构造函数将其转换为字符串。以下示例演示了如何使用 ByteArrayOutputStream 转换输入流回字符串:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = (buffer)) != -1) {
(buffer, 0, bytesRead);
}
String convertedString = new String(());


示例

以下是一个完整的示例,演示了如何使用 StringInputStream 从字符串中读取数据,并将输入流转换回字符串:
import ;
import ;
public class StringInputStreamExample {
public static void main(String[] args) {
// 创建一个 String
String str = "Hello, world!";
// 创建一个 StringInputStream
StringInputStream inputStream = new StringInputStream(str);
// 从输入流中读取数据
Scanner scanner = new Scanner(inputStream);
String convertedString = ();
// 打印转换后的字符串
("Converted string: " + convertedString);
}
}

输出:
Converted string: Hello, world!

2024-11-17


上一篇:使用 Java 代码执行 SQL 语句

下一篇:Java I/O 流的全面指南