BufferedOutputStream有一个Byte[] buf成员,按理说用下面的代码就能得到其默认大小

BufferedOutputStream bos = new BufferedOutputStream(someOutputStream);

bos.buf.length;

但是buf是protected变量,不能直接访问,也没有相应的get方法,怎么办?我们知道protected成员在继承树上是可见的,就是说其孩子可见,那么可以想到通过继承BufferedOutputStream的办法,来获取buf的大小,代码如下:

public class MyBufferedOutputStream extends BufferedOutputStream {

public MyBufferedOutputStream(OutputStream out){

super(out);

System.out.println("buf size: " + super.buf.length);

System.out.println("count: " + super.count);

}

public static void main(String[] args) {

try {

MyBufferedOutputStream mbos = new MyBufferedOutputStream(new FileOutputStream("123.txt"));

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

}

运行结果为:8192字节!

对于bufferedInputStream也一样。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐