我正在尝试将对象的print()函数的标准输出重定向到String变量。
为此,我正在使用以下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
中,以便能够将其作为(已处理的)字符串返回。
此功能代码不会终止。
答案 0 :(得分:1)
您可以尝试这个。如果我正确回答了您的问题。
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()
}