Понимание некоторого кода Java - мне нужно небольшое объяснение - PullRequest
1 голос
/ 11 марта 2012

Может кто-нибудь объяснить, что именно делает этот код и его компоненты? Я не очень знаком с использованием процессов или собственного кода Android. Было бы здорово, если бы кто-то мог объяснить, как работает этот код:

private static MatchResult matchSystemFile(final String pSystemFile, final String pPattern, final int pHorizon) throws SystemUtilsException {
    InputStream in = null;
    try {
        final Process process = new ProcessBuilder(new String[] { "/system/bin/cat", pSystemFile }).start();

        in = process.getInputStream();
        final Scanner scanner = new Scanner(in);

        final boolean matchFound = scanner.findWithinHorizon(pPattern, pHorizon) != null;
        if(matchFound) {
            return scanner.match();
        } else {
            throw new SystemUtilsException();
        }
    } catch (final IOException e) {
        throw new SystemUtilsException(e);
    } finally {
        StreamUtils.close(in);
    }
}

private static int readSystemFileAsInt(final String pSystemFile) throws SystemUtilsException {
    InputStream in = null;
    try {
        final Process process = new ProcessBuilder(new String[] { "/system/bin/cat", pSystemFile }).start();

        in = process.getInputStream();
        final String content = StreamUtils.readFully(in);
        return Integer.parseInt(content);
    } catch (final IOException e) {
        throw new SystemUtilsException(e);
    } catch (final NumberFormatException e) {
        throw new SystemUtilsException(e);
    } finally {
        StreamUtils.close(in);
    }
}

Мне нужно понять эту часть: как процесс принимает две строки, я не могу понять, как этот код работает с двумя файлами (мне кажется, что / system / bin / cat и строка pSystemFile являются путями к файлам) и извлекает необходимую информацию.

 final Process process = new ProcessBuilder(new String[] { "/system/bin/cat", pSystemFile }).start();

    in = process.getInputStream();
    final Scanner scanner = new Scanner(in);

    final boolean matchFound = scanner.findWithinHorizon(pPattern, pHorizon) != null;
    if(matchFound) {
        return scanner.match();
    }

Этот код взят из AndEngines Utils.

С уважением, Акиф Хамид

1 Ответ

1 голос
/ 11 марта 2012

Оба метода принимают имя файла в качестве параметра и запускают утилиту cat, передавая путь к файлу.Затем оба метода читают выходные данные внешнего процесса: сначала используя Scanner, затем StreamUtils, который читает все сразу, а затем анализирует содержимое как целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...