перехватить вывод cmd и включить его в список java

#java #android

#java #Android

Вопрос:

я пытаюсь выполнить некоторую cmd-команду на Java, мой скрипт:

 public void test(){
try{

Runtime rt=Runtime.getRuntime();
Process p = rt.exec("cmd /c " "adb devices");

BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

while((line=input.readLine())!=null){

    System.out.print(line);

}

}catch(Exception e){
    System.out.println("process failed");
    }
} 
  

и результат вывода:

 run:
List of devices attached 
0160880B0401F006    device
  

как я могу перехватить часть этого результата: «0160880B0401F006» и поместить в список в моем графическом интерфейсе?

спасибо перед

Ответ №1:

Я бы использовал регулярное выражение (непроверенное):

 Pattern p = Pattern.compile("(d )s*(.*)");
while((line=input.readLine())!=null){
    Matcher m = p.matcher(line);
    if (m.matches()) {
        String id = matcher.group(1);
        String name = matcher.group(2);
        // do whatever you want with your values here
        System.out.println("id: "   id   ", name: "   name);
    }
}
  

Вы также должны прочитать, когда Runtime.exec() не будет, на случай, если у вас возникнут какие-либо проблемы с выполнением внешней команды.

Ответ №2:

 public void test(){
        try{

            Runtime rt=Runtime.getRuntime();
            Process p = rt.exec("cmd /c " "adb devices");

            BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line=input.readLine();//discard first line
            List<String> deviceList=new ArrayList<String>();
            while((line=input.readLine())!=null){
                deviceList.add(line.split(" ")[0]);
            }
            System.out.println("Device list " deviceList);
        }catch(Exception e){
            System.out.println("process failed");
        }
    }
  

Комментарии:

1. я пытаюсь использовать ваш метод. но в этой строке отображается ошибка: Список <Строка> Список устройств=новый список массивов<Строка>();

2. в чем ошибка? Если это связано с импортом, добавьте import java.util. ArrayList; импортировать java.util.List;