命令行参数丢失?
Command-Line Arguments Being Lost?
我正在编写一个 Java 程序来清理一些数据。
我正在向它传递我需要的文件,但第一个文件被忽略了!
重现问题的最少代码:
public class Classifier {
public static void main(String[] args) throws IOException {
System.out.println(args[0]);
for (String s : args) {
System.out.println(s);
}
}
}
我 运行 使用以下命令行参数:
java Classifier < March.csv February.csv
我收到的输出是:
February.csv February.csv
谁能解释这是为什么?
<
运算符将此文件重定向到此 Java 进程的标准输入
所以
如果你有
java Classifier < March.csv
并尝试读取参数,您会看到 none,如果您读取标准输入,您会读取文件内容
< March.csv
被 shell 解释为输入重定向。 March.csv
的内容被发送到您程序的标准输入,您忽略了它。这发生在 shell,甚至在您的 Java 程序启动之前。因此,只有 February.csv
作为命令行参数发送给 main
。
删除 <
,以便发送您打算发送到 main
的所有命令行参数。
我正在编写一个 Java 程序来清理一些数据。
我正在向它传递我需要的文件,但第一个文件被忽略了!
重现问题的最少代码:
public class Classifier {
public static void main(String[] args) throws IOException {
System.out.println(args[0]);
for (String s : args) {
System.out.println(s);
}
}
}
我 运行 使用以下命令行参数:
java Classifier < March.csv February.csv
我收到的输出是:
February.csv February.csv
谁能解释这是为什么?
<
运算符将此文件重定向到此 Java 进程的标准输入
所以
如果你有
java Classifier < March.csv
并尝试读取参数,您会看到 none,如果您读取标准输入,您会读取文件内容
< March.csv
被 shell 解释为输入重定向。 March.csv
的内容被发送到您程序的标准输入,您忽略了它。这发生在 shell,甚至在您的 Java 程序启动之前。因此,只有 February.csv
作为命令行参数发送给 main
。
删除 <
,以便发送您打算发送到 main
的所有命令行参数。