2 Stimmen

Java-Dateieingabe als Kommandozeilenargument

Wie verarbeitet man in Java Informationen, die aus einer Datei eingegeben wurden? Ein Beispiel: Nehmen wir an, Sie haben eine Datei input.txt. Der Inhalt dieser Datei ist: abcdefghizzzzjklmnop azzbcdefghijklmnop

Ich hatte gehofft, dass die Informationen in das Argument-Array von Zeichenketten eingefügt würden, so dass der folgende Code "abcdefghizzzzjklmnop" ausgeben würde

class Test {
    public static void main(String[] args) {
        System.out.println(args[0]);
    }
}

Der Befehl, den ich verwendet habe, löst eine Array out of bound-Ausnahme aus. Dieser Befehl ist:

java Test < input.txt

Nicht dateibasierte Argumente funktionieren jedoch problemlos. z.B. java Test hello,a und java Test < input.txt hello.

Mehr Informationen: Ich habe versucht, den gesamten Inhalt der Datei in eine Zeile zu setzen, um zu sehen, ob \n \r Zeichen können die Dinge durcheinander bringen. Das schien nicht zu helfen.

Außerdem kann ich nicht die Bufferedreader-Klasse dafür verwenden, weil dies für ein Programm für die Schule ist, und es muss mit meinem Professoren Shell-Skript arbeiten. Er ging über diese während der Klasse, aber ich habe es nicht aufschreiben (oder ich kann es nicht finden).

Gibt es Hilfe?

10voto

John Millikin Punkte 190278

Sie sollten in der Lage sein, die Eingabedaten zu lesen von System.in .

Hier ist ein schnelles und einfaches Beispiel. javac Test.java; java Test < Test.java :

class Test
{
    public static void main (String[] args)
    {
        byte[] bytes = new byte[1024];
        try
        {
            while (System.in.available() > 0)
            {
                int read = System.in.read (bytes, 0, 1024);
                System.out.write (bytes, 0, read);
            }
        } catch (Exception e)
        {
            e.printStackTrace ();
        }
    }
}

2voto

Es scheint, dass Sie jedes Mal, wenn Sie eine formale Frage zu Ihrem Problem stellen, eine Lösung finden.

Bei der Eingabe einer Datei über "< input.txt" wird diese als Benutzereingabe und nicht als Befehlszeilenargument eingegeben. Das wurde mir klar, kurz nachdem ich erklärt hatte, warum die Bufferedreader-Klasse nicht funktionieren würde.

Es hat sich herausgestellt, dass Sie die Klasse der gepufferten Leser verwenden müssen.

-1voto

Uri Punkte 86472

Ich bin mir nicht sicher, warum Sie den Inhalt einer Datei als Befehlszeilenargumente übergeben wollen, es sei denn, Sie machen eine seltsame Testumgebung.

Sie könnten ein Skript schreiben, das Ihre Datei liest und ein temporäres Skript generiert, in dem auf den Java-Befehl Ihre Anforderungen folgen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X