2017-11-11 94 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!非常感谢,这真的很有帮助! –

相关问题