IntelliJ IDEA: Run java with args from external file

后端 未结 3 1609
情书的邮戳
情书的邮戳 2020-12-06 16:39

I want to run a java class with args supplied as a file.

On shell, i can do

    java SomeClass < 1.txt

Is there any equivalent f

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-06 17:25

    UPDATE:

    This feature is now available for some Run/Debug configurations. At the moment supported types for Java-based run configurations are: Application, Java Scratch, JUnit, JarApplication.

    Use the Redirect input from option:


    Original answer from 2017 with the workaround:

    IntelliJ IDEA doesn't support it at the moment:

    • IDEA-88717 No way to configure STDIN reading from a file at Run/Debug configurations

    You can adjust the code so that it accepts the file name as a parameter and opens it for reading. Or you can create a wrapper class that will redefine System.in, then start your original Main class:

    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);
      }
    }
    

    Make sure to either specify the full path to the file or to change the working directory in IntelliJ IDEA Run/Debug configuration to the location of 1.txt.

    Now you can run MainWrapper class instead of the Main class and it will work the same as running

    java Main < 1.txt
    

    If you need to test with different file names, replace new File("1.txt") with args[0] and pass the file name in the MainWrapper Run/Debug configuration Program arguments field.

提交回复
热议问题