простое консольное приложение с использованием Java - PullRequest
0 голосов
/ 01 июля 2010

Я занимаюсь разработкой простого консольного приложения с использованием Java.Код приведен ниже

`   try {
            File file = new File("writer.txt");
            writer = new BufferedWriter(new FileWriter(file));
            Process myProcess = Runtime.getRuntime().exec("jps -l");
            BufferedReader stdout = new BufferedReader(new InputStreamReader(
                    myProcess.getInputStream()));
            String line = stdout.readLine();
            while (line != null) {
                if (line.contains(".jar")) {
                    writer.write(line);
                    System.out.println(line);
                }
                line = stdout.readLine();
            }
            writer.close();
           }
`    

Код будет отображать текущий запущенный сосуд в моих окнахВыходной формат отображается 2356 Timeout.jar Я хочу отобразить только Timeout.jar Как удалить эти целые значения.Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 01 июля 2010

Предполагая, что у вас есть "2356 Timeout.jar" в line, это вернет только имя банки:

line.substring(line.indexOf(" ") + 1);

Я думаю, что должен быть более простой способ получить работающую банку.Я сделал быстрый поиск, и вы можете посмотреть на следующие вопросы:

0 голосов
/ 01 июля 2010

Если вы используете ОС на базе Linux,

Вместо

Process myProcess = Runtime.getRuntime().exec("jps -l");

попробуйте эту

Process myProcess = Runtime.getRuntime().exec("jps -l | cut -d \" \" -f2");
0 голосов
/ 01 июля 2010
  1. Использовать токен можно только одним способом.

  2. , если вы работаете в Unix, используйте awk для получения второго поля.

0 голосов
/ 01 июля 2010

Вы могли бы:

  • Примените регулярное выражение к строке перед его записью. (Представьте начало строки, затем целые числа, оканчивающиеся на первый пробел)
  • Используйте ls (или dir) в качестве процесса exec вместо jps
  • Просто возьмите список каталогов напрямую, а не через внешний процесс, как показано ниже:

File dir = new File("directoryName");

String[] children = dir.list();

Выполнение того, что у вас есть через JPS, вероятно, не очень хорошая идея, если это не быстрое одноразовое приложение или учебное упражнение из-за следующего примечания со страницы руководства jps:

NOTE- You are advised not to write scripts to parse  jps  output  since
       the  format  may  change  in  future  releases.  If you choose to write
       scripts that parse  jps  output,  expect  to  modify  them  for  future
       releases of this tool.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...