【问题标题】:Simulate input from stdin when running a scala program in intellij在 intellij 中运行 scala 程序时模拟来自 stdin 的输入
【发布时间】:2013-08-26 05:25:36
【问题描述】:

有什么方法可以将命令行参数配置为 intellij 进行标准输入重定向?

类似的东西:

运行 |编辑运行配置 |脚本参数

/shared/java/paf-rules.properties 2 < /shared/java/testdata.csv

【问题讨论】:

标签: scala intellij-idea io-redirection


【解决方案1】:

不幸的是,没有 - 至少不是直接在运行配置中。

afaik,你能做的最好的事情是:

  • 修改您的脚本/程序以在不带参数的情况下运行(读取 System.in)或使用文件名参数(读取文件)

  • 制作一个以上述方式运行的包装脚本/程序。

希望这会有所帮助,

维京人

【讨论】:

  • 我创建了一个支持 stdin/file/heredoc 的模板:代码显示在下面的答案中。
【解决方案2】:

这是一个解决方案模板,其中包含以下选项:

  • 标准输入
  • 文件
  • 程序中的“heredoc”(很可能对测试有用)

.

  val input = """ Some string for testing ... """

  def main(args: Array[String]) {
    val is = if (args.length >= 1) {
      if (args(0) == "testdata") {
        new StringInputStream(input)
      } else {
        new FileInputStream(args(0))
      }
    } else {
      System.in
    }
    import scala.io._
    Source.fromInputStream(is).getLines.foreach { line =>

这个 sn-p 需要使用 StringInputStream - 这里是:

  class StringInputStream(str : String) extends InputStream {
    var ptr = 0
    var len = str.length
    override def read(): Int = {
        if (ptr < len) {
          ptr+=1
          str.charAt(ptr-1)
        } else {
         -1
        }
    }
  }

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多