获取outputstream大小_BufferedOutputStream的缓冲区多大

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也一样。

在 Android Java 中,我们可以通过使用 BufferedOutputStream 类来创建一个带缓冲区的输出。要查看 OutputStream 缓冲区的剩余空间,我们可以使用 BufferedOutputStream 类中的 available() 方法。 以下是一个简单的示例代码,演示如何使用 BufferedOutputStream 类和 available() 方法来查看 OutputStream 缓冲区的剩余空间: ```java import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class OutputStreamExample { public static void main(String[] args) { try { OutputStream outputStream = new FileOutputStream("output.txt"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); // 写入数据到缓冲区 bufferedOutputStream.write("Hello, World!".getBytes()); // 查看缓冲区剩余空间 int remainingSpace = bufferedOutputStream.available(); System.out.println("Remaining space in the buffer: " + remainingSpace); // 刷新缓冲区,将数据写入输出 bufferedOutputStream.flush(); outputStream.close(); bufferedOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的示例代码中,我们首先创建了一个 FileOutputStream 对象,然后使用它来创建一个 BufferedOutputStream 对象。接下来,我们将一些数据写入缓冲区,并使用 available() 方法查看缓冲区的剩余空间。最后,我们使用 flush() 方法刷新缓冲区,将数据写入输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值