确定在java中打印到输出流的字符数

时间:2013-06-18 13:42:34

标签: java c stream

有没有办法确定在java中打印到输出流的字符数?

例如,在C中,printf返回在该特定语句中打印的字符数。

int i=printf("hello");
printf(i);

上面的代码将打印hello和4;

有没有办法在Java中实现相同的目标?

5 个答案:

答案 0 :(得分:1)

您正在打印,因此您知道要显示的字符串。很简单就是你得到字符串长度。

string str="Hello World!";
System.out.println(str);
System.out.println(str.length());

答案 1 :(得分:1)

如果您确实需要此信息,那么我建议使用Jakarta Commons CountingOutputStream。但是,如果您需要在单个打印声明的级别上获取此信息,我会感到惊讶,因此您可以描述您尝试解决的实际问题。

永远不应该做的一件事是计算你写的字符串中的字符数。当然,除非您可以保证字符串中的字符完全由输出流中的单个字节表示。现在,将来永远存在,当有人开始用重音字符或西里尔字母处理你的字符串时,你不会遇到难以发现的错误。

答案 2 :(得分:1)

有些图书馆可以提供帮助。 Google Guava的CountingOutputStream包含OutputStream并提供getCount()方法。这将返回写入的字节,因此取决于编码。请参阅@ parsifal的答案,了解您需要关注的原因。但是,它不提供PrintStream接口。 Jakarta Commons IO提供了一个具有相同名称的类似类。你可以这样做:

OutputStream os = ...;
CountingOutputStream cos = new CountingOutputStream(os);
PrintStream ps = new PrintStream(cos);
// write to ps.
ps.close();
long count = cos.getCount();

答案 3 :(得分:0)

你可以做到

String s= "hello";
System.out.println(s);
System.out.println(s.length());

答案 4 :(得分:0)

我只使用常规字符串库/ API中的length()函数。我不确定是否有其他方式或更简单的方法。很想知道!