我正在使用 JAXB
,我需要知道生成的 XML 的长度,所以我将内容编码到 StringWriter
,所以哪种方式更好地获取长度:
aStringWriter.getBuffer().length();
or
aStringWriter.toString().length();
?
最佳答案
编辑:调用 toString()
将始终创建一个新字符串...虽然它不需要复制实际的字符数据,只需创建一个引用当前 的新字符串char[]
与当前长度和计数。不过,调用 getBuffer().length()
不需要创建任何额外的对象,因此效率稍微高一些。
你对输出做了什么?反正你不把它转换成字符串吗?
请注意,此处的长度始终是字符 的长度,因此它不适用于 HTTP 响应的 Content-Length header 之类的内容,它需要 中的值em>bytes(即编码后)。
编辑:好吧,如果你想要字节数,我建议你创建一个 ByteArrayOutputStream
,如果可以的话直接将它传递给 JAXB(我忘记了 API 是什么样子的)或者围绕它创建一个 OutputStreamWriter
。这样您就可以从 ByteArrayOutputStream
获取二进制长度。
关于java - 在 StringWriter 中获取字符串长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3744766/