Czy pojedynczy ciąg może zawierać wiele linii?
Na przykład jeśli przypiszę wiele linii do łańcucha jako tak:
while ((line = reader.readLine()) != null)
{
output += line + "\n";
}
Czy mogę zwrócić dane wyjściowe z separatorami linii jako jeden ciąg?
Piszę program Socket, który ma program klienta i serwera, gdzie klient wysyła żądanie do serwera, a serwer zwraca to żądanie w postaci ciągu z powrotem do klienta, ale niektóre ciągi są wieloma wierszami.
Kod programu serwera (część kodu):
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();
}
}
Kod programu klienta:
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);
}
fromServer w programie klienta jest wyprowadzany z programu Server. Działa to dobrze w przypadku wyjścia, które jest jedną linią, ale jeśli jego wiele linii nie jest w stanie wymyślić, jak go wydrukować na raz.
Więc jeśli na przykład wynik jest równy:
One
Two
Three
Four
Powraca tak:
One
Enter your choice: (It prompts me for new command)
Two
Enter your choice:
Three
Enter your choice:
Four
W zasadzie drukuje jedną linię, pyta mnie o nowy wybór i nie ma znaczenia, co wprowadzę, drukuje drugą linię, trzecią linię i tak dalej, aż osiągnie ostatnią linię, zamiast drukować w ten sposób:
One
Two
Three
Four
Enter your choice: