2017-03-17 5 views
3

Ich möchte eine Java-Klasse mit Argumenten als Datei geliefert werden.IntelliJ IDEA: Run Java mit Argumenten aus der externen Datei

Auf Schale, kann ich tun

java SomeClass < 1.txt 

Gibt es eine Entsprechung für diese auf intellij und/oder gradle.

Ich versuchte IntelliJ IDEA -> Konfigurationen bearbeiten. Aber das Argument wird nicht angenommen.

Antwort

0

Die < 1.txt Syntax bedeutet, dass der Befehlsprozessor sicherstellt, dass die Standardeingabe (System.in in Java) den Inhalt der 1.txt-Datei bereitstellt. Der typische Java-Launcher unterstützt dies nicht.

Sie können dies emulieren, indem Sie manuell System.in verdrahten, um aus der Datei mit Ihrem eigenen Java-Snippet zu lesen, um dies zu tun.

4

IntelliJ IDEA ist es zur Zeit nicht unterstützen:

  • IDEA-88717 No way STDIN aus einer Datei auf Ausführen/Debug-Konfigurationen Lesen konfigurieren

Sie den Code so anpassen können, dass sie akzeptiert den Dateinamen als Parameter und öffnet ihn zum Lesen. Oder Sie können eine Wrapper-Klasse erstellen, die System.in neu definieren wird, dann Ihre ursprüngliche Main Klasse beginnen:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 

public class MainWrapper { 
    public static void main(String[] args) throws IOException { 
    FileInputStream is = new FileInputStream(new File("1.txt")); 
    System.setIn(is); 
    Main.main(args); 
    } 
} 

Vergewissern Sie sich, um entweder den vollständigen Pfad zur Datei angeben oder das Arbeitsverzeichnis in IntelliJ IDEA Run/Debug-Konfiguration zu ändern zum Ort der 1.txt.

Jetzt können Sie MainWrapper Klasse anstelle der Main Klasse laufen, und es wird die gleiche Arbeit wie

java Main < 1.txt 

laufen Wenn Sie mit unterschiedlichen Dateinamen testen müssen, ersetzen new File("1.txt") mit args[0] und übergeben Sie den Dateinamen in Die MainWrapper Run/Debug-Konfiguration Programmargumente Feld.

Verwandte Themen