在java中,如何将输出作为字符串获取到控制台

在java中,如何将输出作为字符串获取到控制台,java,Java,我目前正在尝试将任何内容打印到控制台中,并将其存储为字符串。我必须能够以错误的形式连接到System.out.println方法中,任何由我以外的人创建的东西都必须在控制台中结束。我已经尝试过使用扫描仪,但这只是为了在控制台中键入内容,我阅读了有关管道的文档,但据我所知,您仍然需要提供管道数据,而不是管道从控制台获取数据。有人知道我需要使用什么来从控制台打印字符串吗?您可以将控制台打印重定向到您自己的流,请参见此 您可以将控制台打印重定向到您自己的流,请参见 我使用了朱西姆·爱立信的资源来解决我

我目前正在尝试将任何内容打印到控制台中,并将其存储为字符串。我必须能够以错误的形式连接到System.out.println方法中,任何由我以外的人创建的东西都必须在控制台中结束。我已经尝试过使用扫描仪,但这只是为了在控制台中键入内容,我阅读了有关管道的文档,但据我所知,您仍然需要提供管道数据,而不是管道从控制台获取数据。有人知道我需要使用什么来从控制台打印字符串吗?

您可以将控制台打印重定向到您自己的流,请参见此

您可以将控制台打印重定向到您自己的流,请参见

我使用了朱西姆·爱立信的资源来解决我的问题。首先,我为我的文本区域创建了一个输出流,这是我的数据所在

public class ConsoleRedirection extends OutputStream{

    private JTextArea textArea;

    public ConsoleRedirection(JTextArea textArea) {
        this.textArea = textArea;
    }

    @Override
    public void write(int b) throws IOException {
        textArea.append(String.valueOf((char)b));
    }

}
然后,我使用我的输出流创建了一个打印流,并将System.out设置为我的自定义打印流

    PrintStream printStream = new PrintStream(new ConsoleRedirection(console));
    System.setOut(printStream);
    System.setErr(printStream);

我用朱西姆·爱立信的资源解决了我的问题。首先,我为我的文本区域创建了一个输出流,这是我的数据所在

public class ConsoleRedirection extends OutputStream{

    private JTextArea textArea;

    public ConsoleRedirection(JTextArea textArea) {
        this.textArea = textArea;
    }

    @Override
    public void write(int b) throws IOException {
        textArea.append(String.valueOf((char)b));
    }

}
然后,我使用我的输出流创建了一个打印流,并将System.out设置为我的自定义打印流

    PrintStream printStream = new PrintStream(new ConsoleRedirection(console));
    System.setOut(printStream);
    System.setErr(printStream);

你需要什么代码?我需要的是连接到system.out.println方法这还不清楚。你是说你想截取所有其他写入“控制台”的程序的输出吗?如果有10个控制台窗口打开怎么办?你想捕获所有这些吗?如果其他程序的输出没有显式地通过管道传输到您的程序,为什么您认为操作系统会允许您读取其他程序的输出?是的,我想截取打印到控制台的内容,包括我正在使用的库中的错误和内容。我不需要访问任何其他程序的控制台。Swall,系统有一个setOut()方法。但我从未见过任何像样的库直接写入System.out。它们都使用一个日志框架。也许您应该正确配置日志记录。您的用例是什么?你为什么要这么做?看看这个答案:我想他没有添加任何示例,但你只需要
ConsoleOutputCapturer c=new-ConsoleOutputCapturer();c、 start()ConsoleOutputCapturer c=new-ConsoleOutputCapturer();c、 start()
当你不想再捕获时停止。作为评论会更好谢谢这是我要找的。作为评论会更好谢谢这是我要找的。