2017-11-11 92 views
1

我對java很陌生,所以這可能是一個愚蠢的問題。但我需要它來解決我的數據結構類項目...如何在不使用shell的情況下將multipe文件饋入java命令行

所以我想用我的程序喂2個不同的輸入文件。我知道我們可以使用Scanner和InputStreamReader來實現這個1文件,我不知道我應該怎麼做2個文件。

在我的一些類似問題的答案中,有人提到了我認爲可以解決這個問題的shell。然而,我對shell沒有任何瞭解,所以我想知道是否可以在不編寫shell文件的情況下解決這個問題,以及在命令行中輸入多個文件的語法。

我在命令行中執行什麼(1個輸入文件):

java UserInterfaceOrNot <input.txt> output.txt 

如果需要的話,我將發佈更多的代碼。

代碼:

public class UserInterfaceOrNot 
{ 
    public static EventManager em; 
    public static Scanner scn = new Scanner(new InputStreamReader(System.in)); 

    public static void main (String [] args) 
    { 
     UserInterfaceOrNot ui = new UserInterfaceOrNot(); 
     while (scn.hasNext()){ui.runData();} 
     scn = new Scanner(new InputStreamReader(System.in)); 
     while (scn.hasNext() && !scn.next().equals("x")){ui.runCommand();} 
    } 
+0

當您運行該程序時,您可以提供任意數量的參數。例如:java UserInterfaceOrNot input1.txt input2.txt output.txt。那是你想要達到的目標嗎? –

+0

@MarkSet我認爲是的。但我不知道將文件作爲參數傳遞並放在「<」之後的區別......它們是否相同? Bcs我的教授寫了一些使用「<」的詞,所以我只是假設他希望我們這樣做。 –

+0

你能告訴我你如何解釋這些論點的代碼嗎? –

回答

0
java UserInterfaceOrNot input1.txt input2.txt output.txt 

當你打電話給你的程序,因爲這,你實際上傳遞3個參數給你的java public static void main (String [] args)方法。 您可以在該字符串數組中找到這些參數(String [] args)。 讀取參數:

  1. String myFirstFile = args [0]; //這將是「input1.txt」
  2. String mySecondFile = args [1]; //這將是「input2.txt」
  3. String myOutputFile = args [2]; //這將是「output.txt的」

可以讀取每個文件(輸入1和輸入2)這樣在你的主要方法創建另一個方法

public String readFileAsString(String inputFile) throw IOException { 
    BufferedReader br = new BufferedReader(new FileReader(inputFile)); 
    try { 
     StringBuilder sb = new StringBuilder(); 
     String line = br.readLine(); 

     while (line != null) { 
      sb.append(line); 
      sb.append(System.lineSeparator()); 
      line = br.readLine(); 
     } 

     return sb.toString(); 
    } finally { 
     br.close(); 
    } 

} 

然後,你可以這樣調用:

public static void main(String[] args) throws Exception { 
    UserInterfaceOrNot ui = new UserInterfaceOrNot(); 
    String inputFile1 = args[0]; 
    String inputFile2 = args[1]; 

    String input1AsString = ui.readFileAsString(inputFile1); 
    String input2AsString = ui.readFileAsString(inputFile2); 
    //continue with your logic 
} 
+0

謝謝!所以我們不需要在命令行中使用「<" or ">」作爲參數?他們是爲了什麼? –

+0

是的,你不需要「<" , ">」。我認爲你的proffesor只是作爲一個例子使用 –

+0

Get your!非常感謝,這真的很有幫助! –

相關問題