爪哇套接字、输入流、输入流读取器如何找到缓冲区中数据量的值

问题描述

我有一个数据采集信息的数据流,就像一个爆管一样进来。 (实际上是其中的 3 个)。

我可以读取数据并将其打印到控制台,不会遗漏任何数据。

我现在正在将数据保存到数据库中,这当然是一个瓶颈。我也以令人印象深刻的速度运行。

积压导致套接字停止接收数据,发送方停止发送数据。程序继续通过缓冲区工作一段时间。

有没有办法获得这个流的缓冲区大小?我想在读取足够的数据后清除缓冲区。

我不确定这是否在套接字、套接字、InputStream 或 InputStreamReader 中。

InputStream inputStream1 = socket1.getInputStream();
InputStreamReader inputStreamReader1 = new InputStreamReader(inputStream1,StandardCharsets.UTF_8);

if (inputStreamReader.ready()) {
    recMsg(inputStreamReader,inputStream,(LinkedList) msgFifo);  // Get more data
    //System.out.print("Got More data: ");
}
public static void recMsg(InputStreamReader inputStreamReader,InputStream inputStream,LinkedList msgFifo) throws IOException {
    int x;
    int loop = 0;
    boolean ready;
    while ((x = inputStreamReader.read()) != -1) {
        char result = (char)x;
        msgFifo.add(x);
        loop += 1;
        ready = inputStreamReader.ready();

        if (loop >= bufferSize * 2) break; //bufferSize is 2048
        if(!ready) break;
    }

我正在学习 Java,我知道有些代码不是很好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)