我正在使用JAXB
,我需要知道生成的XML的长度,因此我将内容编组为StringWriter
,因此哪种方法更合适:
aStringWriter.getBuffer().length();
or
aStringWriter.toString().length();
? 最佳答案
编辑:调用toString()
将始终创建一个新字符串...尽管它不需要复制实际的字符数据,只需创建一个引用当前char[]
并具有当前长度和计数的新字符串。调用getBuffer().length()
不需要创建任何额外的对象,因此效率更高。
不过,您对输出做什么?您是否仍将其转换为字符串?
请注意,尽管这里的长度始终是字符长度,所以它不适用于HTTP响应的Content-Length标头,它需要以字节为单位的值(即编码后)。
编辑:好的,如果您想要字节计数,我建议您创建一个ByteArrayOutputStream
,或者如果可以的话,直接将其传递给JAXB(我忘记了API的外观)或在其周围创建一个OutputStreamWriter
。这样,您可以从ByteArrayOutputStream
获取二进制长度。
关于java - 在StringWriter中获取字符串长度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3744766/