通过使用文件重定向为其提供输入来运行 Java 程序

2023-12-01

我正在尝试使用文件重定向来运行 Java 程序。我正在用这个简单的程序测试它:

package netbeans.sanbdox;

public class Sanbdox {
    public static void main(String[] args) {
        for(int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}

当我进入命令行并运行时

$ java -jar dist/compiled_project.jar < q1.txt
$ 

尽管没有输出q1.txt不是一个空文件。我应该怎么做才能使文件重定向起作用?


以这种形式重定向只是替换stdin来自该文件的文件流。你的代码没有使用stdin对于任何东西,因此您不会有任何输出,因为您没有向程序传递任何命令行参数。

要查看您的期望,您必须使用Scanner:

Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
    System.out.println(scanner.next());
}

scanner.close(); // Not required for stdin but good practice

如果您真正想要的是将文件中的每个标记作为命令行参数提供,您可以在 shell 中执行以下操作:

$ java -jar dist/compiled_project.jar $(cat q1.txt)

这将输出的内容q1.txt作为 shell 命令的一部分。由于换行符或其他问题,它很可能无法按您想要的方式工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过使用文件重定向为其提供输入来运行 Java 程序 的相关文章

随机推荐