我意识到这不是一个非常具有描述性的问题,但我不确定如何陈述它......
我写了一个解释器,Tiny_Int.java,用于编写一种名为“tiny”的语言。我需要知道的是如何使用指定的小文件运行解释器:
java Tiny_Int <Sample.tiny
知道我正在使用它读取小文件
可能会有所帮助FileReader fileReader = new FileReader(file); //file being the Sample.tiny
BufferedReader bufferedReader = new BufferedReader(fileReader);
答案 0 :(得分:4)
你似乎在混淆两个概念。如果你想像这样使用shell重定向:
java Tiny_Int < Sample.tiny
然后shell会将文件内容推送到System.in
,您无需显式加载文件。您只需要从System.in
读取它。
另一方面,如果您希望程序接受一个明确的参数来说明您要使用哪个文件,请执行以下操作:
java Tiny_Int Sample.tiny
然后,您需要查看String[]
的{{1}}参数才能打开文件。
令人惊讶main
能有多大差异!
答案 1 :(得分:3)
您正在将文件重定向到Java命令,因此您应该使用
从标准输入流(System.in
)读取内容
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
使用br.readLine()
读取每一行,直到它返回null。
答案 2 :(得分:2)
如果您期待来自标准输入的输入,请使用System.in
:
FileReader fileReader = new FileReader(System.in);
请注意,如果您从这样的stdin读取,那么在Unix上,您可以使用shebang行来使Sample.tiny
脚本可执行:
#!/usr/bin/java Tiny_Int
print "hello"
当您使用./Sample.tiny
运行脚本时,JVM将在stdin上使用脚本的 rest 运行。
答案 3 :(得分:0)
使用传递给main方法的命令行参数(String args [])。
更多信息:http://download.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html
args [0]是你的变量'file'。