Я пишу программу, которая в основном отправляет команду linux через java, а затем выводит результат. Он отлично работает, если выход - только одна строка, но для вывода нескольких строк я не могу понять, что я делаю неправильно. Например, чтобы проверить использование памяти, я использую команду «свободный», но он возвращает только строки 1 и 3. Вот мой код:Печать нескольких строк, возвращаемых BufferedReader
if (clinetChoice.equals("3"))
{
String command = "free";
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
System.out.println("You Chose Option Three");
String line;
while ((line = reader.readLine()) != null)
{
output += line;
System.out.println(line);
line = reader.readLine();
}
}
При запуске этого он возвращает только:
total used free share buffers cached
-/+ buffers/cache: 6546546 65464645
Код клиента:
while ((fromServer = input.readLine()) != null)
{
System.out.println("Server: " + fromServer);
if (fromServer.equals("Bye"))
break;
System.out.print("Enter your choice: ");
fromClient = stdIn.readLine().trim();
if(fromClient.equals("1"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("2"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("3"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("4"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
break;
}
}
этот ответ правильный, просто нажмите кнопку 'line = reader.readLine();' в нижней части вашего цикла. – lynks
Это работает, спасибо. Единственное, что он возвращает все на одной линии. Я добавил вывод + = line + "\ n"; но это печатает одну строку за раз, а не печатать все за один раз. – Nick
@Nick: 'readLine' потребляет новую строку, поэтому вам нужно будет добавить ее обратно. Если вы хотите распечатать вывод все сразу, удалите 'println' в своем цикле и выполните' println (output) 'после цикла. Я добавлю это в ответ – pb2q