龙书编译输入

Dragon book compiler input

我正在执行 "Dragon book" 前端编译器,它需要使用

的文件输入
java main.Main < fileInput.txt

我的问题是:当我运行args.length时,返回值是0。fileInput.txt不是一个参数吗?我怎样才能在代码上捕捉到它?

不,通过重定向提供标准输入是 shell 的一项功能。检测此使用的唯一方法是在标准 io 文件 handles/descriptors.

上使用 OS 函数

不,您没有向程序传递参数。相反,您正在写入已执行程序的标准输入(fileInput.txt 的内容可以通过 System.in 访问)。

以防万一,示例阅读:

Scanner scanner = new Scanner(System.in);
while(scanner.hasNextLine()) { 
    System.out.println(scanner.nextLine());
}

编辑:现在发现一个类似的问题,见:Reading in from System.in - Java ;-)