java - 在 StringWriter 中获取字符串长度?

标签 java jaxb

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

相关文章:

Java:调用 JAXBContext.newInstance() 时出现 JAXB IllegalAnnotationException

java - jaxb注解不可扩展的原因是什么?

jaxb - jaxb 2.0版未在xmlrootelement中使用name属性

java - Java Swing 组件的基本问题?

java - 我如何将字符串变量插入到java中的Sql语句中

java - 如何按订单从 MS-Access 检索记录?

JAVAFX:运行 PauseTransition 时设置光标 CURSOR.WAIT

java - 将随机类型的 arrayList 添加到 arrayList

java - 获取 MismatchedInputException : Cannot deserialize instance of Object while parsing JSON to result object

spring - 使用 JAXB + Spring RESTful Web 服务防止 XXE(外部实体处理)攻击