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



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

与C语言类似,printf返回在该特定语句中打印的字符数。

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

上面的代码将输出hello和4;

是否有任何方法在Java中实现相同的?

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

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

如果您确实需要这些信息,那么我建议使用Jakarta Commons CountingOutputStream。但是,如果您需要在单个print语句级别上的这些信息,我会感到惊讶,所以也许您可以描述您试图解决的实际问题。

不应该做的一件事是计算你写的字符串中的字符数。当然,除非您可以保证字符串中的字符由输出流中的单个字节精确地表示。现在,以及将来永远,这样当有人开始交给您带有重音字符或西里尔字母的字符串时,您就不会遇到难以发现的错误。

有一些库可以提供帮助。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();

你可以做

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

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

相关内容

  • 没有找到相关文章

最新更新