gpt4 book ai didi

java - Java OutputStream flush() 方法的实现

转载 作者:行者123 更新时间:2023-11-29 05:23:48 25 4
gpt4 key购买 nike

我有一个写线程,使用OutputStream,我想实现一个flush()方法。
As mentioned in the API ,

The flush method of OutputStream does nothing
and should be implemented if needed.

我有以下线程,我对如何覆盖 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) {

}

}

谢谢!

最佳答案

您的问题是关于“实现”flush() 但您的代码没有实现输出流。我猜你要么想问关于“使用”flush() 的问题,要么你错过了 getOutputStream() 返回一个 OutputStream 的实现,它很可能有一个有效的 flush()(在某些情况下它是一个空的实现,因为如果流没有缓冲则不需要特殊处理。

我不确定您使用的是什么 BluetoothSocket,但如果它是 android.bluetooth.BluetoothSocket 那么这将返回一个 BluetoothOutputStream,它同时转发写入和直接冲入 BT socket 。

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

关于java - Java OutputStream flush() 方法的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com