📅  最后修改于: 2023-12-03 15:31:50.572000             🧑  作者: Mango
BufferedInputStream是InputStream的一个包装器,它可以提供缓冲功能,从而提高文件读取的效率。
markSupported()方法是BufferedInputStream提供的一个方法,用于判断当前输入流是否支持标记(mark)和重置(reset)操作。如果支持标记和重置操作,则返回true;否则返回false。
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
public class BufferedInputStreamDemo {
public static void main(String[] args) {
try (InputStream inputStream = new FileInputStream("example.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream)) {
// 判断当前输入流是否支持标记和重置操作
if (bufferedInputStream.markSupported()) {
System.out.println("当前输入流支持标记和重置操作");
} else {
System.out.println("当前输入流不支持标记和重置操作");
}
// 读取文件内容
byte[] buffer = new byte[1024];
int len;
while ((len = bufferedInputStream.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
// 标记当前位置,并且设置标记的读取限制为5个字节
bufferedInputStream.mark(5);
// 读取5个字节
byte[] buffer1 = new byte[5];
int len1 = bufferedInputStream.read(buffer1);
System.out.println("读取前5个字节:" + new String(buffer1, 0, len1));
// 重置输入流
bufferedInputStream.reset();
// 再次读取文件内容
byte[] buffer2 = new byte[1024];
int len2;
while ((len2 = bufferedInputStream.read(buffer2)) != -1) {
System.out.println(new String(buffer2, 0, len2));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}