将 print() 输出重定向到字符串而不是标准输出

Redirect print() output into a String instead of stdout

我正在尝试将对象的 print() 函数的标准输出重定向到字符串变量中。

为了做到这一点,我使用了以下 Java 导入(在 Kotlin 中):

import java.io.PipedOutputStream
import java.io.PipedInputStream
import java.io.PrintStream

以及以下函数:

fun index(): String {

        val df_out = DataFrame.fromJson("https://jsonplaceholder.typicode.com/posts")
        val pipeOut = PipedOutputStream()
        val pipeIn = PipedInputStream(pipeOut)
        System.setOut(PrintStream(pipeOut));
        df_out.print(maxRows = 10)
        val dfAsStr = pipeIn.bufferedReader().use { it.readText() }
        return dfAsStr
    }

想法是将 print() 方法的输出捕获到 PipedInputStream 中,以便能够 return 它作为(已处理的)字符串。

这个函数代码没有终止。

你可以试试这个。如果我答对了你的问题。

fun index(): String {
    val df_out = DataFrame.fromJson("https://jsonplaceholder.typicode.com/posts")
    val outStream = ByteArrayOutputStream().apply { System.setOut(PrintStream(df_out)) }
    df_out.print(maxRows = 10)
    return outStream.toString()
}