📜  Java.io.StringBufferInputStream类(1)

📅  最后修改于: 2023-12-03 15:01:35.043000             🧑  作者: Mango

Java.io.StringBufferInputStream类介绍

Java.io.StringBufferInputStream类提供了一个输入流,从一个 StringBuffer 对象中读取字节。它继承了 InputStream 类,因此可以使用该类提供的所有方法。

构造器

StringBufferInputStream 类提供了以下两个构造器:

public StringBufferInputStream(StringBuffer s)
public StringBufferInputStream(String s)

第一个构造器采用一个 StringBuffer 对象作为参数,第二个构造器采用一个字符串作为参数。这两个构造器都将创建一个 StringBufferInputStream 对象,并将输入流的下一个读取位置设为 0。

方法

该类提供了以下方法:

available()
public synchronized int available()

返回剩余的可供读取的字节数。

read()
public synchronized int read()

从输入流中读取下一个字节,并返回下一个字节的值。如果已经到达了输入流的末尾,则返回 -1。

read(byte[] b, int off, int len)
public synchronized int read(byte[] b, int off, int len)

将最多 len 个字节从输入流中读取到字节数组 b 中,其中字节从偏移量 off 开始存储,并返回实际读取的字节数。如果已经到达了输入流的末尾,则返回 -1。如果未读取到任何字节,则返回 0。

reset()
public synchronized void reset()

将输入流的读取位置重新设置为 0。

mark(int readAheadLimit)
public synchronized void mark(int readAheadLimit)

将当前位置(即,下一个将被读取的字节的位置)标记为输入流中的某一点,并保留 readAheadLimit 个字节。之后,调用 reset() 方法将将输入流的读取位置重新设置为这个标记位置。

markSupported()
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(过时的),这意味着它已经不推荐使用了。相反,建议使用 ByteArrayInputStreamStringReader 等替代方法。