java - 在检查另一个 BufferedReader 之前,如何打印一个 BufferedReader 中可用的每一行?

标签 java bufferedreader

        PrintWriter out = new PrintWriter(DoDSocket.getOutputStream(), true);

        BufferedReader in = new BufferedReader(new InputStreamReader(DoDSocket.getInputStream()));

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

        String fromServer;
        String fromUser;

        while ((fromServer = in.readLine()) != null)
        {

            System.out.println(fromServer);

            if ((fromUser= stdIn.readLine()) != null)
            {
                //System.out.println(fromUser);
                out.println(fromUser);
            }
        }

在客户端的这段代码中,我创建了一个打印写入器和一个与服务器通信的缓冲读取器,我还有一个单独的读取器,它从命令行读取 System.in。

我目前的问题是,如果服务器向客户端发送多行字符串,我将必须按 Enter 才能接收每一行。如何编辑此代码,以便在检查用户输入的内容之前从服务器的缓冲读取器打印每一行,而不是在每一行之后进行检查?

最佳答案

为什么不一个接一个地循环呢?:

PrintWriter out = new PrintWriter(DoDSocket.getOutputStream(), true);

BufferedReader in = new BufferedReader(new InputStreamReader(DoDSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

String fromServer;
String fromUser;

while ((fromServer = in.readLine()) != null)
{
    System.out.println(fromServer);
}

while ((fromUser = stdIn.readLine()) != null)
{
    System.out.println(fromUser);
}

关于java - 在检查另一个 BufferedReader 之前,如何打印一个 BufferedReader 中可用的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22734605/

相关文章:

java - 关于 String 的 replaceAll 方法的困惑

java - 当我调用 bufferedReader.readLine() 时,我的 Android 应用程序卡住了;

java - 如何在多个测试类之间共享 JUnit BeforeClass 逻辑

java - java中是否可以监听所有对象的创建?

java - Android 可打包 : How to read/write string array lists and integer arrays

go - 并发 |协程 |语言 |缓冲阅读器

java - 在文本文件中搜索字符串?

java - 读取 Java BufferedReader 的所有内容,包括行终止字符

java - 序列化 BigInteger : signum-magnitude mismatch

java - 无法在 Ubuntu 中使用 Java 压缩空文件夹