2013-06-18 36 views
1

有什么方法可以确定在java中打印到输出流的字符数?确定在java中打印到输出流的字符数

就像在C中一样,printf返回在该特定语句中打印的字符数。

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

上面这段代码会打印出你好和4;

有什么办法可以在Java中实现相同的功能吗?

回答

1

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

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

你可以做

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

我只是用length()功能从常规字符串库/ API。我不确定是否有其他方法或更简单的方法。虽然很想知道!

1

如果您确实需要这些信息,那么我建议您使用Jakarta Commons CountingOutputStream。不过,如果您需要在个别印刷声明的级别上提供这些信息,我会感到惊讶,因此您可能会描述您尝试解决的实际问题。

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

1

有些图书馆可以提供帮助。谷歌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();