Как проверить, имеют ли два файла одинаковый контент, используя Beyond Compare java API?

У меня есть два файла, которые нужно указать в качестве входных данных, и я использую Java API инструмента Beyond Compare, чтобы проверить, является ли содержимое обоих файлов одинаковым или нет.

Я хочу сделать это, не открывая окно Beyond Compare. Ниже приведен код, который я использую в настоящее время.

ProcessBuilder processBuilder = new ProcessBuilder("C:\\Program Files\\Beyond Compare 4\\BCompare.exe",
            "file1path", "file2path","/qc=bin", "\silent");

    Process ps;
    try {
        ps = processBuilder.start();
        OutputStream os = ps.getOutputStream();
        os.close();

        InputStream inputStream = ps.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
        }

        ps.waitFor();
        System.out.println("Exit value :" + ps.exitValue());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

Как упоминалось здесь, введите здесь описание ссылки, использование /silent не приведет к открытию окна. Несмотря на использование /silent, я все еще вижу всплывающее окно инструмента Beyond Compare. Пожалуйста, предложите некоторые обходные пути для достижения того же


person BIndu_Madhav    schedule 30.03.2017    source источник
comment
Мое предложение: сначала попробуйте освоить вызов BCompare.exe из командной строки и сразу после этого перейдите на java и вызовите его как внешний процесс.   -  person bohuss    schedule 30.03.2017
comment
Также кажется, что вы используете обратную косую черту вместо косой черты для команды Windows - замените \silent на /silent в своем последнем аргументе при создании ProcessBuilder   -  person bohuss    schedule 30.03.2017
comment
Если вы используете команду /qc, вам не нужен /silent. bcompare.exe /qc=binary file1.txt file2.txt запустит двоичное сравнение двух файлов и вернет результат в виде кода выхода. Коды выхода и переключатели командной строки определены в разделе Справочник по командной строке файла справки Beyond Compare 4.   -  person Chris Kennedy    schedule 03.04.2017


Ответы (1)


Я выполнил свое требование, немного изменив аргументы, переданные в Process Builder. Ниже приведено изменение, которое я сделал.

ProcessBuilder processBuilder = new ProcessBuilder("C:\\Program Files\\Beyond Compare 4\\BCompare.exe",
        "file1path", "file2path","/fv=Text Compare", "/qc=binary");

Это сработало для меня.

person BIndu_Madhav    schedule 11.04.2017