如何在不使用 shell 的情况下将多个文件提供给 java 中的命令行
how to feed multipe files to command line in java without using shell
我对 java 很陌生,所以这可能是个愚蠢的问题。但是我需要为我的数据结构 class 项目解决它...
所以我正在尝试为我的程序提供 2 个不同的输入文件。我知道我们可以使用 Scanner 和 InputStreamReader 通过 1 个文件来实现这一点,但我不知道我应该如何使用 2 个文件来实现。
在一些与我类似问题的回答中,有人提到shell,我认为这可能可以解决这个问题。但是,我对shell一无所知,所以我想知道是否可以在不编写shell文件的情况下解决这个问题,以及语法是什么用于在命令行中输入多个文件。
我在命令行中执行的内容(使用 1 个输入文件):
java UserInterfaceOrNot < input.txt > output.txt
如果需要,我会 post 更多代码。
代码:
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();}
}
java UserInterfaceOrNot input1.txt input2.txt output.txt
当您这样调用您的程序时,实际上是将 3 个参数传递给您的 java public static void main (String [] args)
方法。
您可以在该字符串数组 (String [] args
) 中按顺序找到这些参数。
要阅读参数:
- String myFirstFile = args[0]; // 这将是 "input1.txt"
- String mySecondFile = args[1]; // 这将是 "input2.txt"
- String myOutputFile = args[2]; // 这将是 "output.txt"
您可以通过创建另一个方法来像这样读取每个文件(input1 和 input2)
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
}
我对 java 很陌生,所以这可能是个愚蠢的问题。但是我需要为我的数据结构 class 项目解决它...
所以我正在尝试为我的程序提供 2 个不同的输入文件。我知道我们可以使用 Scanner 和 InputStreamReader 通过 1 个文件来实现这一点,但我不知道我应该如何使用 2 个文件来实现。
在一些与我类似问题的回答中,有人提到shell,我认为这可能可以解决这个问题。但是,我对shell一无所知,所以我想知道是否可以在不编写shell文件的情况下解决这个问题,以及语法是什么用于在命令行中输入多个文件。
我在命令行中执行的内容(使用 1 个输入文件):
java UserInterfaceOrNot < input.txt > output.txt
如果需要,我会 post 更多代码。
代码:
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();}
}
java UserInterfaceOrNot input1.txt input2.txt output.txt
当您这样调用您的程序时,实际上是将 3 个参数传递给您的 java public static void main (String [] args)
方法。
您可以在该字符串数组 (String [] args
) 中按顺序找到这些参数。
要阅读参数:
- String myFirstFile = args[0]; // 这将是 "input1.txt"
- String mySecondFile = args[1]; // 这将是 "input2.txt"
- String myOutputFile = args[2]; // 这将是 "output.txt"
您可以通过创建另一个方法来像这样读取每个文件(input1 和 input2)
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
}