Simuler entrée stdin lors de l'exécution d'un programme à l'ide

Existe-t-il un moyen de configurer les args de ligne de commande à intellij pour la redirection stdin?

Quelque chose du genre:

Exécuter / Modifier Les Configurations D'Exécution / Paramètres De Script

/shared/java/paf-rules.properties 2 < /shared/java/testdata.csv
37
demandé sur javadba 2013-08-26 09:25:36

2 réponses

Malheureusement, non-du moins pas directement dans les configurations d'exécution.

Le mieux que vous pouvez faire, afaik, est soit de:

  • Modifiez votre script / programme pour qu'il s'exécute sans args (lit System.in) ou avec un argument filename (lit le fichier)

  • Créez un script / programme wrapper qui agit de la manière ci-dessus.

J'espère que cela aide,

Vikingsteve

15
répondu vikingsteve 2013-08-26 12:12:17

Voici un modèle pour une solution qui a des options pour:

  • stdin
  • fichier
  • "heredoc" dans le programme (très probablement utile pour les tests)

.

  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 =>

Cet extrait nécessite l'utilisation D'un StringInputStream - et le voici:

  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
        }
    }
  }
1
répondu javadba 2017-10-29 14:29:10