Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何将OutputStream上的文本格式化为用户的宽度';谁的控制台?_Java_Text_Console_Word Wrap_Outputstream - Fatal编程技术网

Java:如何将OutputStream上的文本格式化为用户的宽度';谁的控制台?

Java:如何将OutputStream上的文本格式化为用户的宽度';谁的控制台?,java,text,console,word-wrap,outputstream,Java,Text,Console,Word Wrap,Outputstream,具体来说,我希望发送到用户OutputStream的文本具有单词包装,以便当文本继续到新行时,单词不会被拆分。因此,与此相反: The quick brown fox j umps over the lazy do g. 它将显示在控制台中,如下所示: The quick brown fox jumps over the lazy dog. 我知道的一个选项是编写一个这样的方法,将文本换行到特定的字符宽度: wrapText(String text, int width) 但我更希望文

具体来说,我希望发送到用户OutputStream的文本具有单词包装,以便当文本继续到新行时,单词不会被拆分。因此,与此相反:

The quick brown fox j
umps over the lazy do
g.
它将显示在控制台中,如下所示:

The quick brown fox 
jumps over the lazy 
dog.
我知道的一个选项是编写一个这样的方法,将文本换行到特定的字符宽度:

wrapText(String text, int width)
但我更希望文本自动换行到用户控制台的当前宽度。有没有办法做到这一点?java中的任何对象都可以帮助我吗?谢谢

A将帮助您确定在何处断线,从那里您可以轻松地自己进行实际的断线


但是,我不知道如何确定(自动、跨平台)用户控制台的宽度。

要获取控制台的宽度,您可以使用库。它不是纯Java,有一些本机代码,但具有您需要的功能,可以在Windows、Max和Linux上使用


在JLine中,要获取控制台宽度,请使用类并调用
getTerminalWidth()

首先,您应该考虑一个
编写器
,而不是
输出流
OutputStream
处理二进制数据,而不是文本。(要编写文本,您通常需要将
OutputStream
包装在
OutputStreamWriter
或类似的东西中。)@Jon:
PrintStream
(就像从
System.out
获得的那样)可以直接处理字符数据(不考虑潜在的字符编码问题)。@Jon:好的,所以我的思路是正确的。我现在已经将OutputStream包装在PrintWriter中,但我不确定是否应该使用该Writer来解决此问题。@BalusC:PrintStream可以,但在我看来通常不应该使用,考虑到它接受错误的方式…@torjinx:我实际上会让你的类自己使用
编写器
,然后调用方可以决定使用
打印编写器
来包装
输出流
。如果我试图检测用户控制台在套接字上的宽度,JLine会起作用吗?@torjinx你是说结束SSH/Telnet?是的。