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) {
}
}