2 Stimmen

Wie kann man eine Datei als Argument nehmen?

Mir ist klar, dass das keine sehr anschauliche Frage war, aber ich war mir nicht sicher, wie ich sie sonst formulieren sollte.

Ich habe einen Interpreter, Tiny_Int.java, für eine erfundene Sprache namens "tiny" geschrieben. Alles, was ich wissen muss, ist, wie ich den Interpreter mit einer bestimmten Tiny-Datei wie folgt ausführen kann:

java Tiny_Int <Sample.tiny

Vielleicht ist es hilfreich zu wissen, dass ich die kleine Datei folgendermaßen lese

FileReader fileReader = new FileReader(file); //file being the Sample.tiny
BufferedReader bufferedReader = new BufferedReader(fileReader);

4voto

templatetypedef Punkte 343693

Sie scheinen zwei Begriffe zu verwechseln. Wenn Sie eine Shell-Umleitung wie diese verwenden möchten:

java Tiny_Int < Sample.tiny

Dann wird die Shell den Inhalt Ihrer Datei in System.in und Sie brauchen die Datei nicht explizit zu laden. Sie müssen sie nur lesen aus System.in .

Wenn Sie hingegen möchten, dass Ihr Programm ein explizites Argument aufnimmt, das angibt, welche Datei Sie verwenden möchten, etwa so:

java Tiny_Int Sample.tiny

Dann sollten Sie sich die String[] Argument zu main um die Datei zu öffnen.

Erstaunlich, wie viel Unterschied ein < machen kann!

3voto

jatanp Punkte 3814

Sie leiten die Datei an den Java-Befehl um, daher sollten Sie den Inhalt aus dem Standardeingabestrom lesen ( System.in ) verwenden,

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

Utilice br.readLine() um jede Zeile zu lesen, bis sie null zurückgibt.

2voto

Greg Hewgill Punkte 882617

Wenn Sie eine Eingabe von stdin erwarten, verwenden Sie System.in :

FileReader fileReader = new FileReader(System.in);

Beachten Sie, dass Sie, wenn Sie auf diese Weise von stdin lesen, unter Unix eine shebang-Zeile verwenden können, um Ihre Sample.tiny Skript ausführbar:

#!/usr/bin/java Tiny_Int

print "hello"

Wenn Sie Ihr Skript mit ./Sample.tiny dann wird die JVM mit der Option Rest Ihres Skripts auf stdin.

0voto

vbcr Punkte 101

Unter Verwendung von Befehlszeilenargumenten, die an Ihre Hauptmethode übergeben werden (String args[]).

Mehr Informationen: http://download.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html

args[0] ist Ihre Variable 'file'.

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