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

l a*_*a s 18 java intellij-idea gradle

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

在shell上,我能做到

    java SomeClass < 1.txt
Run Code Online (Sandbox Code Playgroud)

在intellij和/或gradle上是否有任何等价物.

我试过IntelliJ IDEA - >编辑配置.但是,这个论点并没有过去.

Cra*_*der 18

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

java Main < 1.txt
Run Code Online (Sandbox Code Playgroud)

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


cof*_*n21 12

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

在此处输入图片说明


Tho*_*sen 1

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

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