如何在不使用shell的情况下将multipe文件馈送到Java中的命令行

Yu Shi

我对Java很陌生,因此它可能是一个愚蠢的问题。但是我需要为我的数据结构类项目解决它...

所以我试图用2个不同的输入文件来填充程序我知道我们可以使用Scanner和InputStreamReader用1个文件来实现这一点,我不知道我应该如何用2个文件来实现。

在与我的类似问题的一些答案中,有人提到了我认为可以解决此问题的外壳。但是,我对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();}
    }
麦克风
java UserInterfaceOrNot input1.txt input2.txt output.txt

像这样调用程序时,实际上是将3个参数传递给javapublic static void main (String [] args)方法。您可以在该String数组(String [] args中按顺序找到这些参数读取参数:

  1. 字符串myFirstFile = args [0]; //这将是“ input1.txt”
  2. 字符串mySecondFile = args [1]; //这将是“ input2.txt”
  3. 字符串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();
    }

}

然后在您的main方法中可以这样调用它:

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
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不使用shell输出重定向的情况下从命令行写入文件?

在Inno Setup中如何在不使用批处理文件的情况下执行命令行工具

如何在不使用命令行的情况下从GitHub历史记录中删除文件

如何在不使用命令行的情况下运行Laravel artisan命令

如何在不使用 git 命令的情况下通过命令行从 azure 克隆 repo

如何在不使用鼠标的情况下将整个命令行复制到剪贴板?

如何在不使用keytool命令行实用程序的情况下导入新的Java CA证书?

如何在不使用sudo的情况下从命令行禁用联网?

如何在不使用命令行的情况下获取Square Connect位置

如何在不使用 Gcloud 命令行的情况下获取 Google OAUTH 令牌

如何在不使用命令行的情况下删除Xubuntu 14.04

如何在不使用命令行运行的情况下以编程方式为 JMeter 设置代理设置

如何在不使用鼠标的情况下将文本从命令行复制到剪贴板?

如何在不使用docker exec -it <image> psql -h localhost -U postgres的情况下,在容器外部使用秘密在Docker中通过命令行登录Postgres?

如何在不使用Shell命令的情况下通过SSH以编程方式修改文件?

如何在不使用Shell配置文件的情况下更改/修复v命令?

如何在Java中不使用XMLHttpRequest的情况下将数据发送到服务器?

如何在不需要命令行的root用户的情况下替换ISO文件中的文件

如何在没有 sed 的情况下从命令行替换(PHP)文件中的电子邮件?

如何在不绑定命令行的情况下从 .bat 文件启动 exe

如何在不停止程序的情况下退出命令行输入使用者?

有没有办法在不使用桌面版本或命令行的情况下将文件导入 Github?

如何在不使用服务器上的GUI的情况下使用命令行来调整分区的大小?

如何在不使用C#进程打开新命令行窗口的情况下使用“ schtasks”执行计划任务?

如何在不使用js的情况下将java中的json字符串化

如何在不使用bash -x的情况下将命令保存在变量中并打印翻译后的命令

在Linux中不使用网络命令行的情况下,如何知道打开端口的列表以及拥有它们的进程?

在不使用pdftk的情况下从命令行合并PDF页面的内容

在不使用命令行的情况下从RStudio初始化GitHub存储库