簡體   English   中英

IntelliJ IDEA:使用來自外部文件的 args 運行 java

[英]IntelliJ IDEA: Run java with args from external file

我想運行一個 java 類,其中 args 作為文件提供。

在外殼上,我可以做到

    java SomeClass < 1.txt

在 intellij 和/或 gradle 上是否有任何等價物。

我嘗試了 IntelliJ IDEA -> 編輯配置。 但是,爭論沒有得到通過。

更新

此功能現在可用於某些運行/調試配置。 目前基於 Java 的運行配置支持的類型有:Application、Java Scratch、JUnit、JarApplication。

使用重定向輸入選項:

重定向輸入


2017 年的原始答案以及解決方法:

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 Run/Debug 配置程序參數字段中傳遞文件名。

從版本 2018.3 開始,您現在實際上可以這樣做:
- 選擇“運行/調試配置”
- 在“重定向輸入”字段中設置輸入文件的路徑

在此處輸入圖片說明

< 1.txt語法意味着命令處理器確保標准輸入(Java 中的System.in )提供 1.txt 文件的內容。 典型的 Java 啟動器不支持此功能。

您可以通過手動重新連接System.in以使用您自己的 Java 代碼段從文件中讀取來模擬這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM