从批处理文件向Java进程提供输入

3

如果我有一个简单的Java程序,可以从标准输入流中处理文本行,那么我可以使用以下脚本来运行它:

@Echo off
java Test < file.txt
pause
exit

脚本将文件file.txt中的输入行重定向到Java程序中。
有没有办法避免使用单独的文件?还是这是最简单的方法?
谢谢。

你是在说你只想让Java将你的键盘输入重定向到任何地方吗? - Nitrodist
我在想是否有一种方法可以将多行输入发送给Java程序,而不使用文件。 - YGL
你不能修改你的Java主函数,从args中读取并将文件作为参数传递给主函数吗? - Romain Hippeau
2个回答

4
请使用管道
这个简单的Java应用程序只是从stdin中打印出行:
public class Dump {
  public static void main(String[] args) {
    java.util.Scanner scanner = new java.util.Scanner(System.in);
    int line = 0;
    while (scanner.hasNextLine()) {
      System.out.format("%d: %s%n", line++, scanner.nextLine());
    }
  }
}

使用此批处理文件调用:

@ECHO OFF
(ECHO This is line one
ECHO This is line two; the next is empty
ECHO.
ECHO This is line four)| java -cp bin Dump
PAUSE

...它将打印:

0: This is line one
1: This is line two; the next is empty
2:
3: This is line four

太棒了。我不知道我可以用括号来连通多行代码。谢谢。 - YGL

0

你可以简单地执行:

$ java Test < file.txt

但是如果你绝对需要 pause 命令,你将不得不在脚本中执行它,或者在测试类中编写暂停行为的代码。


你可以直接执行 java Test < file.txt & pause - Joey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接