小编Dan*_*dez的帖子

没有缓冲的OutputStreamWriter是否存在?

我需要将一个流转换char为一个bytes 流,即我需要一个从java.io.Writer接口到a 的适配器java.io.OutputStream,支持任何有效的Charset,我将作为配置参数.

但是,java.io.OutputStreamWriter该类有一个隐藏的秘密:sun.nio.cs.StreamEncoder它委托给下面的对象创建一个8192字节(8KB)的缓冲区,即使你没有要求它.

问题是,OutputStream最后我插入了一个需要计算正在写入的字节数的包装器,以便在输出特定数量的字节后立即停止执行源系统.如果OutputStreamWriter正在创建一个8K缓冲区,我只是被告知生成的字节数太晚,因为它们只会在缓冲区刷新时到达我的计数器(所以已经有超过8,000个已经生成的字节在等待我OutputStreamWriter缓冲).

所以,问题是,有没有在Java运行时的任何地方Writer- > OutputStream桥可以运行无缓冲

我真的,真的很讨厌自己写这个:( ...

注意:在每次写入时按下flush()OutputStreamWriter不是有效的替代方法.这会带来很大的性能损失(synchronized涉及到一个块StreamEncoder).

注2:我知道可能有必要在桥上保留一个小的char溢出来计算代理.这不是我需要在它生成第n个字节的那一刻停止执行源系统(这是不可能的,因为给定的字节可以byte[]write调用中以更大的形式出现给我).但是我需要尽快停止它,等待8K,2K甚至200字节的缓冲区才能刷新,这简直太迟了.

java buffer outputstream writer

7
推荐指数
1
解决办法
863
查看次数

标签 统计

buffer ×1

java ×1

outputstream ×1

writer ×1