有什么方法可以确定在java中打印到输出流的字符数?确定在java中打印到输出流的字符数
就像在C中一样,printf返回在该特定语句中打印的字符数。
int i=printf("hello");
printf(i);
上面这段代码会打印出你好和4;
有什么办法可以在Java中实现相同的功能吗?
有什么方法可以确定在java中打印到输出流的字符数?确定在java中打印到输出流的字符数
就像在C中一样,printf返回在该特定语句中打印的字符数。
int i=printf("hello");
printf(i);
上面这段代码会打印出你好和4;
有什么办法可以在Java中实现相同的功能吗?
您正在打印,因此您知道要显示的字符串。简单的是你得到了字符串的长度。
string str="Hello World!";
System.out.println(str);
System.out.println(str.length());
你可以做
String s= "hello";
System.out.println(s);
System.out.println(s.length());
我只是用length()
功能从常规字符串库/ API。我不确定是否有其他方法或更简单的方法。虽然很想知道!
如果您确实需要这些信息,那么我建议您使用Jakarta Commons CountingOutputStream。不过,如果您需要在个别印刷声明的级别上提供这些信息,我会感到惊讶,因此您可能会描述您尝试解决的实际问题。
有一件事你不应该做是计数你写的字符串中的字符数。当然,除非可以保证字符串中的字符完全由输出流中的单个字节表示。现在,并且永远在将来,这样当有人开始向你提供带有重音字符或西里尔字符的字符串时,你不会遇到难以发现的错误。
有些图书馆可以提供帮助。谷歌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();