【问题标题】:Redirect print() output into a String instead of stdout将 print() 输出重定向到字符串而不是标准输出
【发布时间】:2019-06-11 13:42:40
【问题描述】:

我正在尝试将对象的 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 中,以便能够将其作为(已处理的)字符串返回。

此功能代码不会终止。

【问题讨论】:

    标签: kotlin inputstream stdout


    【解决方案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()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      相关资源
      最近更新 更多