【问题标题】:Java StringBufferJava 字符串缓冲区
【发布时间】:2012-02-21 03:23:03
【问题描述】:

我正在尝试从服务器下载 XML 文档。从我的日志中,我看到我得到了完整的文件;但是,当我将文档转换为字符串时,我只有 4096 个字节。

private String getString(InputStream inputStream) {
    byte[] arrayOfByte = new byte[2048];
    StringBuffer sB = new StringBuffer();
    try {
        while (true)
        {
            int i = inputStream.read(arrayOfByte);
            if (i == -1) {
               return sB.toString();
            }
            sB.append(new String(arrayOfByte, 0, i));
        }
    } catch (IOException e) {

    }
    return null;
}

谁能解释我做错了什么?

【问题讨论】:

  • 我认为这不是您的问题,但此代码不是 Unicode 安全的。单个字符可以有多个字节,并且在跨越缓冲区时可能会中断。

标签: java string inputstream httpurlconnection


【解决方案1】:

就我个人而言,我总是使用Apache Commons IO 来处理这类事情:

String stuff = IOUtils.toString(inputStream, "UTF-8");

但是,您的代码看起来没问题,所以错误可能在其他地方。

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多