IntelliJ IDEA:使用外部文件中的args运行java

时间:2017-03-17 22:01:27

标签: java intellij-idea gradle

我想运行一个带有作为文件提供的args的java类。

在shell上,我可以做到

    java SomeClass < 1.txt

在intellij和/或gradle上是否有任何相同的内容。

我试过IntelliJ IDEA - &gt;编辑配置。但是,这个论点并没有过去。

3 个答案:

答案 0 :(得分:17)

IntelliJ IDEA目前不支持它:

  • IDEA-88717无法在运行/调试配置
  • 中配置文件的STDIN读取

您可以调整代码,使其接受文件名作为参数并将其打开以供阅读。或者,您可以创建一个包装类,重新定义System.in,然后启动原始的Main类:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class MainWrapper {
  public static void main(String[] args) throws IOException {
    FileInputStream is = new FileInputStream(new File("1.txt"));
    System.setIn(is);
    Main.main(args);
  }
}

确保指定文件的完整路径或将IntelliJ IDEA运行/调试配置中的工作目录更改为1.txt的位置。

现在您可以运行MainWrapper类而不是Main类,它将与运行

相同
java Main < 1.txt

如果您需要使用不同的文件名进行测试,请将new File("1.txt")替换为args[0],并在MainWrapper运行/调试配置程序参数中传递文件名字段。

答案 1 :(得分:6)

您实际上可以立即执行此操作,starting from version 2018.3
 -选择“运行/调试配置”
 -在“重定向输入自”字段中设置输入文件的路径

enter image description here

答案 2 :(得分:0)

< 1.txt语法意味着命令处理器确保标准输入(Java中的System.in)提供1.txt文件的内容。典型的Java启动程序不支持此功能。

您可以通过手动重新连接System.in来使用您自己的Java代码段从文件中读取来模拟此操作。