代码之家  ›  专栏  ›  技术社区  ›  mabuzer

在StringWriter中获取字符串长度?

  •  1
  • mabuzer  · 技术社区  · 14 年前

    我在用 JAXB StringWriter

    aStringWriter.getBuffer().length();
     or
    

    aStringWriter.toString().length();
    ?
    2 回复  |  直到 14 年前
        1
  •  4
  •   Jon Skeet    14 年前

    编辑:调用 toString() 将始终创建新字符串。。。尽管它不需要复制实际的字符数据,但是只需要创建一个引用当前字符的新字符串 char[] 使用当前长度和计数。打电话 getBuffer().length() 不需要创建 任何 额外的对象,所以它的效率略高。

    你对输出做了什么?你不把它转换成字符串吗?

    请注意,此处的长度始终为中的长度 人物 字节 (即编码后)。

    ByteArrayOutputStream ,如果可以的话,可以直接将其传递给JAXB(我已经忘记API是什么样子了),或者创建一个 OutputStreamWriter 围绕着它。这样你就可以得到 距离 ByteArrayOutputStream公司 相反。

        2
  •  1
  •   Ashish Patil    14 年前

    我这样做

    Charset UTF8Charset = Charset.forName("UTF8");
    String output = stringWriter.toString();
    response.setContentType("application/xml");
    response.setContentLength(output.getBytes(UTF8Charset).length);
    PrintWriter out = response.getWriter();
    out.print(output);