Java OutputStream flush()方法的实现

Java OutputStream flush()方法的实现,java,flush,Java,Flush,我有一个使用OutputStream的写入线程,我想实现一个flush()方法。 , OutputStream的刷新方法不执行任何操作 如有需要,应予以实施 我有以下线程,对于如何重写flush() 谢谢 您的问题是关于“实现”flush(),但您的代码没有实现输出流。我猜您可能想询问关于“使用”flush()的问题,或者忽略了以下事实:getOutputStream()返回OutputStream的一个实现,该实现很可能具有工作flush()(在某些情况下,它是一个空实现,因为如果流没有缓冲,

我有一个使用
OutputStream
的写入线程,我想实现一个
flush()
方法。
,

OutputStream的刷新方法不执行任何操作
如有需要,应予以实施

我有以下线程,对于如何重写
flush()

谢谢

您的问题是关于“实现”
flush()
,但您的代码没有实现输出流。我猜您可能想询问关于“使用”flush()的问题,或者忽略了以下事实:
getOutputStream()
返回OutputStream的一个实现,该实现很可能具有工作flush()(在某些情况下,它是一个空实现,因为如果流没有缓冲,则不需要特殊处理)

我不确定您使用的是什么BluetoothSocket,但如果它是android.bluetooth.BluetoothSocket,则返回一个
BluetoothOutputStream
,它将写入和刷新直接转发到BT套接字


通常,您需要在单个消息/数据包的末尾调用flush()。当向流中注入大量数据时,不应调用它。(因为如果您这样做,您可能会降低吞吐量,并减少流实现的选项以减少开销)。

文档说,
OutputStream
(顺便说一句,它是
abstract
)的基本实现没有任何作用;这并不意味着继承此基类的类使用此基类实现。为什么要重写
OutputStream
flush()
方法?只需使用
PrintWriter
BufferedWriter
就有很多impl。因为您想修改类的行为(实现
flush()
),所以需要对其进行扩展。您可以从创建自己的类开始,该类扩展了某种类型的
OutputStream
,您应该能够覆盖并实现
flush()
。抽象类扮演模板模式的角色,具体类决定如何填充刷新。
    private class ConnectedThread extends Thread {
        private final BluetoothSocket mmSocket;
        private final InputStream mmInStream;
        private final OutputStream mmOutStream;

        public ConnectedThread(BluetoothSocket socket) {
            mmSocket = socket;
            InputStream tmpIn = null;
            OutputStream tmpOut = null;

            // Get the BluetoothSocket input and output streams
            try {
                    tmpIn = socket.getInputStream();
                    tmpOut = socket.getOutputStream();
            } catch (IOException e) {

            }

            mmInStream = tmpIn;
            mmOutStream = tmpOut;
         }


        public void write(byte[] buffer) {

            try {
                mmOutStream.write(buffer);
               // does nothing
                mmOutStream.flush();
            } catch (IOException e) {

            }

        }