将 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()
}
我正在尝试将对象的 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()
}