当输出到控制台 PrintWriter 时文本向右移动
Text moves to right when outputs to console PrintWriter
我正在编写一个非常简单的服务器应用程序,因此当客户端连接到它时,它每秒从 for-loop 输出一个递增的数字:
int port = 9428;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Waiting for client..");
Socket client = serverSocket.accept();
System.out.println("Client accepted!");
PrintWriter clientWriter = new PrintWriter(client.getOutputStream());
for (int i = 0; i < 10; i++) {
clientWriter.write(i + "\n");
clientWriter.flush();
Thread.sleep(1000);
}
clientWriter.close();
client.close();
虽然程序运行良好,但它以一种奇怪的方式对齐控制台中的输出:
为了连接到服务器,我在 Windows 控制台中使用 telnet:telnet localhost 9428
我无法理解为什么它以这种方式工作,我应该在一栏中全部对齐,就像 System.out.println(i)
所做的那样。
有人遇到同样的问题并且知道如何解决吗?
您在 Windows,因此您必须使用 Windows 行尾 \r\n
。您可以从 System.lineSeparator()
而不是硬编码获取它。
clientWriter.write(i + System.lineSeparator());
或使用 PrintWriter.println(int)
将在值后输出行分隔符:
clientWriter.println(i);
在 Windows 中,换行符由 CR(回车 return)+ LF(换行)字符组成。
在客户端-服务器设置中,您应该根据客户端平台(Windows 或 *nix)使用 "\r\n"
或 "\n"
。
其他解决方案,例如 println()
和 System.lineSeparator()
将根据 服务器 运行 所在的平台(不是客户端).
我正在编写一个非常简单的服务器应用程序,因此当客户端连接到它时,它每秒从 for-loop 输出一个递增的数字:
int port = 9428;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Waiting for client..");
Socket client = serverSocket.accept();
System.out.println("Client accepted!");
PrintWriter clientWriter = new PrintWriter(client.getOutputStream());
for (int i = 0; i < 10; i++) {
clientWriter.write(i + "\n");
clientWriter.flush();
Thread.sleep(1000);
}
clientWriter.close();
client.close();
虽然程序运行良好,但它以一种奇怪的方式对齐控制台中的输出:
为了连接到服务器,我在 Windows 控制台中使用 telnet:telnet localhost 9428
我无法理解为什么它以这种方式工作,我应该在一栏中全部对齐,就像 System.out.println(i)
所做的那样。
有人遇到同样的问题并且知道如何解决吗?
您在 Windows,因此您必须使用 Windows 行尾 \r\n
。您可以从 System.lineSeparator()
而不是硬编码获取它。
clientWriter.write(i + System.lineSeparator());
或使用 PrintWriter.println(int)
将在值后输出行分隔符:
clientWriter.println(i);
在 Windows 中,换行符由 CR(回车 return)+ LF(换行)字符组成。
在客户端-服务器设置中,您应该根据客户端平台(Windows 或 *nix)使用 "\r\n"
或 "\n"
。
其他解决方案,例如 println()
和 System.lineSeparator()
将根据 服务器 运行 所在的平台(不是客户端).