我正在使用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/

10-11 22:27
查看更多