在Eclipse中使用运行配置从文件中重定向stdin

9

曾经在Eclipse中有一个bug,它阻止了运行配置将文件重定向到标准输入,但据说已经被修复了。但是,我找不到任何说明文档来说明如何在修复后执行此操作。

很容易误解我的目的,所以让我明确一下。 我不是在寻找读取文件的代码。我也不是要传递文件名作为参数。我也不是要重定向stdout或stderr。

我有现有的代码,可以接受正常的标准输入,而不知道它是来自键盘还是文件:

scanner = new Scanner(System.in);
number = scanner.nextInt();

当然,在命令提示符下,可以轻松地从文件中重定向输入,但我正在尝试配置Eclipse,在按下Ctrl-F11键时自动执行。

公平警告,我已经进行了大量的网页搜索,试图自己回答这个问题,其中许多人声称答案在“运行配置”|“常规”,但它们最终只适用于stdout。


1
这是Eclipse 4.5版本的功能公告和描述:https://www.eclipse.org/mars/noteworthy/#_assigning_stdin_to_a_file - Petr Janeček
@Stanec 你的评论是最佳答案。值得注意的是,如果你在使用4.4版本时尝试这样做,可能会在弄清楚情况之前就覆盖你的输入文件与输出文件。 - candied_orange
@Stanec 不幸的是,尽管您提供了相反的链接文档,在下载了Eclipse Mars 4.5.0 M1之后,我发现“Common”看起来和“工作”与Luna 4.4相同。 :( - candied_orange
等等,4.5.0 M1 版本已经过时了!“M1”代表“里程碑 1”。该问题在 M4 版本中已经修复。你确定下载的是 Eclipse 的最终版本吗? - Petr Janeček
@Stanec 显然搜索“eclipse mars download”并不是获取最新版本的好策略。最终在这里找到了一个可以显示构建日期的页面:http://download.eclipse.org/eclipse/downloads/。 - candied_orange
3个回答

7
我希望我理解得没错。 文件需要在结尾处有一个换行符。
public static void main(String[] args) {
    try (Scanner scanner = new Scanner(System.in)) {
        System.out.println(scanner.next());
    }
}

文件应包含文本(以新的空行结尾,不仅仅是文本)。

然后选择运行配置 | 公共 | 输入文件

程序将打印文件内容。

编辑:构建标识符:20150621-1200


"需要在结尾添加一个新行" 确认 +1 - candied_orange

7

由于某些 Mars 4.5 版本没有此功能,您能否更具体地说明最低版本是多少?我知道 M1 没有这个功能,但带有 Build id: I20150603-2000 的 SDK 有。 - candied_orange
任何可以直接从https://www.eclipse.org/downloads/(和/或新的Oopmh安装程序)下载的内容都包含该功能。只有开发版本(标有“M”作为“里程碑”)不包含修复程序。 - Petr Janeček

2
你需要使用Eclipse Mars,因为这个错误修复没有被回溯。
进入“运行配置”,打开你的“Java应用程序”。在“常规”选项卡中,有一个“标准输入和输出”组,你可以定义一个输入文件。

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