【问题标题】:Write on char array写入 char 数组
【发布时间】:2014-09-07 12:01:47
【问题描述】:

我想从流中读取。在实体中,我没有设置内容长度,为此,我无法创建具有固定和正确大小的缓冲区。我创建了一个长度为 16384 的缓冲区,但我的数据更多,并且部分数据丢失了!我想从流中读取并写入 char 数组,我不想用 readLine 读取。我该如何编写这段代码?请用部分代码说明。

谢谢

char[] buffer;
        if (contentLength == -1)
            buffer = new char[16038];
        else
            buffer = new char[contentLength];

        InputStream stream = responseEntity.getContent();
        //String resultS=convertStreamToString(stream);


        InputStreamReader streamReader = new InputStreamReader(stream,"UTF-8");
        int hasRead = 0;
        int readSize = 0;
        int bufferLength = buffer.length;

        //List<Byte>  listChar=new ArrayList<Byte>();

        while (hasRead < bufferLength) {
            readSize = streamReader.read(buffer, hasRead, bufferLength
                    - hasRead);
            if (readSize == -1)
                break;
            hasRead += readSize;
        }

【问题讨论】:

    标签: android buffer inputstream


    【解决方案1】:

    将您发布的代码替换为:

    InputStream stream = responseEntity.getContent();
    BufferedReader br = new BufferedReader(new InputStreamReader(stream,"UTF-8"));
    StringBuilder sb = new StringBuilder();
    String line;
    while ((line = r.readLine()) != null) {
        sb.append(line);
    }
    char buffer[] = sb.toString().toCharArray();
    

    【讨论】:

    • 我在哪里写这段代码?我在 append 方法中设置了什么?
    • 我写了这个,但我的 json 的结尾部分没有返回。为什么?这是服务器的问题还是客户端的问题?
    • 可能是服务器端的问题,你可以检查responseEntity.getContent();是否返回正确的数据或者是null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多