gpt4 book ai didi

Java 控制台同时记录到 readLine 而不会发生冲突

转载 作者:行者123 更新时间:2023-12-02 12:51:12 25 4
gpt4 key购买 nike

我目前正在处理以下问题:我尝试为 java 应用程序制作控制台输入适用于多线程。所以在运行时软件有时会出现新的日志行当我用提示写入 readLine 时出现..当这种情况发生时,它看起来像下面这样: Image of the Console所以它确实像图像中那样堆叠消息..所以这是问题:

如何保留正在写入的行和文本并记录其上方的文本,如下例所示? Gif of the input

(抱歉质量低,但你可以猜到我的意思)

如您所见,我的输入位于底部,仍然可编辑,并且行不会堆叠

感谢您的帮助,在尝试 Log4j、System.console、BufferedReaders 和 Scanner 后我感到非常挣扎

最佳答案

已解决。真是太复杂了..但这里是为了 future :

class ConsoleThread implements Runnable {

private ConsoleReader reader;
private OutputStream output;

public ConsoleThread(OutputStream output, ConsoleReader reader) {
this.output = output;
this.reader = reader;
}

@Override
public void run() {

try {

String message;

while (true) {

message = LoggingQueue.getNextLogEvent();

if(message == null) continue;

reader.print(Ansi.ansi().eraseLine(Ansi.Erase.ALL).toString() + ConsoleReader.RESET_LINE);
reader.flush();
output.write((message + System.lineSeparator()).getBytes());
output.flush();

try {
reader.drawLine();
} catch (Throwable ex) {
reader.getCursorBuffer().clear();
}

reader.flush();

}

} catch (IOException e) {
Controller.handleException(Thread.currentThread(), e);
}

}

使用jLine2和jAnsi的ConsoleReader。输出流只是System.out。

您只需要第二个线程来读取即可完成:)

关于Java 控制台同时记录到 readLine 而不会发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44606067/

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