Подтвердить что ты не робот

Имитировать ввод из stdin при запуске программы Scala в IntelliJ

Есть ли способ настроить аргументы командной строки для intellij для перенаправления stdin?

Что-то по строкам:

Выполнить | Редактировать настройки запуска | Script Параметры

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

Ответ 1

Вот шаблон для решения, имеющего параметры для:

  • STDIN
  • файл
  • "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 =>

Этот фрагмент требует использования 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
        }
    }
  }

Ответ 2

К сожалению, нет - по крайней мере, не непосредственно в конфигурациях запуска.

Лучшее, что вы можете сделать, afaik, либо:

  • измените вашу программу script/для запуска либо без аргументов args (читает System.in), либо с аргументом имени файла (читает файл)

  • создать оболочку script/program, которая действует следующим образом.

Надеюсь, что это поможет,

vikingsteve