📅  最后修改于: 2023-12-03 15:01:35.043000             🧑  作者: Mango
Java.io.StringBufferInputStream
类提供了一个输入流,从一个 StringBuffer
对象中读取字节。它继承了 InputStream
类,因此可以使用该类提供的所有方法。
StringBufferInputStream
类提供了以下两个构造器:
public StringBufferInputStream(StringBuffer s)
public StringBufferInputStream(String s)
第一个构造器采用一个 StringBuffer
对象作为参数,第二个构造器采用一个字符串作为参数。这两个构造器都将创建一个 StringBufferInputStream
对象,并将输入流的下一个读取位置设为 0。
该类提供了以下方法:
public synchronized int available()
返回剩余的可供读取的字节数。
public synchronized int read()
从输入流中读取下一个字节,并返回下一个字节的值。如果已经到达了输入流的末尾,则返回 -1。
public synchronized int read(byte[] b, int off, int len)
将最多 len
个字节从输入流中读取到字节数组 b
中,其中字节从偏移量 off
开始存储,并返回实际读取的字节数。如果已经到达了输入流的末尾,则返回 -1。如果未读取到任何字节,则返回 0。
public synchronized void reset()
将输入流的读取位置重新设置为 0。
public synchronized void mark(int readAheadLimit)
将当前位置(即,下一个将被读取的字节的位置)标记为输入流中的某一点,并保留 readAheadLimit
个字节。之后,调用 reset() 方法将将输入流的读取位置重新设置为这个标记位置。
public boolean markSupported()
该方法始终返回 true。
下面是一个使用 StringBufferInputStream
类的简单示例,示例中读取了一个字符串 "Hello World!",并将其转换为大写字母:
import java.io.InputStream;
import java.io.StringBufferInputStream;
public class Example {
public static void main(String[] args) throws Exception {
String str = "Hello World!";
InputStream is = new StringBufferInputStream(str);
int c;
while ((c = is.read()) != -1) {
System.out.print(Character.toUpperCase((char) c));
}
is.close();
}
}
输出:
HELLO WORLD!
StringBufferInputStream
类已被标记为 @Deprecated
(过时的),这意味着它已经不推荐使用了。相反,建议使用 ByteArrayInputStream
和 StringReader
等替代方法。