java - java中BufferedOutputStream有什么好处?不是每个OutputStream都有一个缓冲区吗?

标签 java stream buffer outputstream

我的问题在某种程度上与此类似: what's the purpose of BufferedOutputStream? 我已经阅读了那里的答案,但仍有一件事我不太明白: 因此,在 Java 中,BufferedOutputStream 有一个内部缓冲区。如果此缓冲区已满或调用了flush(),它将数据写入底层OutputStream(传递给BufferedOutputStream 的构造函数的那个​​)。 到目前为止还可以。但对我来说,实际上任何 OutputStream 都会有这样的缓冲区 - 因为基类 OutputStream 有一个方法lush()。该方法的描述如下:“刷新该输出流并强制写出任何缓冲的输出字节。” 那么...如果所有 OutputStream 都有一个缓冲区,那么 BufferedOutputStream 有什么好处呢? 可能我误解了一些东西......你能帮助我吗?

您好, 丹尼尔

最佳答案

基类OutputStream是抽象的。这意味着它定义了所有输出流的接口(interface)和一些常见行为。您无法实例化 OutputStream 实例。

文档明确指出

The flush method of OutputStream does nothing.

是否使用缓冲区由具体实现决定。

关于java - java中BufferedOutputStream有什么好处?不是每个OutputStream都有一个缓冲区吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753493/

相关文章:

Java - 将项目从 zip 文件移动到受密码保护的 zip 文件中

java - JDBC 瘦适配器无法在高峰时间建立连接

java抛出不可能的NullPointerException

java - 无法在Java swing中设置连接4网格的最大尺寸

OpenGL:为什么 glMapNamedBuffer() 返回 GL_INVALID_OPERATION?

C# 或 .NET 刷新键盘缓冲区

c - 为什么这种 strcpy 的使用被认为是错误的?

java - Camunda嵌入了H2 : Cockpit Login fails

android - 是否可以使用彩信在 Android 中播放互联网广播?

java - 合并网络摄像头流和视频文件并通过 RTP 或 RTSP 发送结果