Uma única string pode conter várias linhas?
Por exemplo, se eu atribuir várias linhas a uma string da seguinte forma:
while ((line = reader.readLine()) != null)
{
output += line + "\n";
}
É possível para mim retornar a saída com separadores de linha como uma String?
Estou escrevendo um programa Socket que possui o programa Cliente e Servidor, no qual o Cliente envia a solicitação ao Servidor e o servidor retorna essa solicitação na forma de uma String de volta ao Cliente, mas algumas String são múltiplas linhas.
Código do programa do servidor (parte do código):
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();
}
}
Código do programa cliente:
while ((fromServer = input.readLine())+"\n" != 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);
}
O programa fromServer in Client é gerado pelo programa Server. Isso funciona bem para a saída que é uma linha, mas se for várias linhas, não consigo descobrir como imprimir tudo de uma vez.
Então, se a saída, por exemplo, é igual a:
One
Two
Three
Four
Ele retorna como este:
One
Enter your choice: (It prompts me for new command)
Two
Enter your choice:
Three
Enter your choice:
Four
Então, basicamente, imprime uma linha, me pede uma nova escolha e não importa o que eu digito, ela imprime a segunda linha, depois a terceira linha e assim por diante até chegar à última linha, em vez de imprimir assim:
One
Two
Three
Four
Enter your choice: