Как избежать пары перевода строки возврата каретки - PullRequest
1 голос
/ 20 июня 2011

Я извлекаю трассировки отладки (в двоичном виде) с телефона Android с помощью следующей команды:

adb logcat -B > input.bin

Затем я передаю эти двоичные данные (input.bin) в скрипт python, который их анализирует.

Проблема, с которой я сталкиваюсь, заключается в том, что в input.bin:

0A (перевод строки) заменяется на 0D0A (CR и LF), когда вышеуказанная команда введена в оболочке Linux.

0A (перевод строки) заменяется на 0D0D0A, когда указанная выше команда введена в командной строке Windows.

Я не хочу такого поведения.

Я попытался изменить настройки своего терминала, изменив onlcr на -onlcr, но безуспешно.

Кто делает эти изменения ??? Как их избежать ????

1 Ответ

0 голосов
/ 20 июня 2011

Проблема в том, что Linux использует только LF для перевода строки (\ r), в то время как Windows использует (\ r \ n) для новой строки в качестве перевода строки и возврата каретки.Это поведение по умолчанию в командной строке, поэтому я думаю, что вы должны работать немного более сложным, но общим способом, то есть использовать программу Java для извлечения выходных данных из этой команды и записи данных в файл через класс Writer, а не в поток вывода.

Process exec = Runtime.getRuntime().exec("adb logcat -B");

BufferedWriter buffWriter = new BufferedWriter(new FileWriter("FileName"));

BufferedReader buffReader = new BufferedReader(new InputStreamReader(exec.getInputStream()));

buffWriter.write(buffReader.readLine());

Теперь выходной файл одинаков для обеих ОС.

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