InputStreamReader不限制返回的长度

时间:2013-08-27 21:21:30

标签: java android inputstream

我正在努力学习Java并正在浏览Android网站上的示例。我正在获取XML文件的远程内容。我能够获取文件的内容,但之后我需要将InputStream转换为String

public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
        InputStreamReader reader = null;
        reader = new InputStreamReader(stream, "UTF-8");        
        char[] buffer = new char[len];
        reader.read(buffer);
        return new String(buffer);
    }

我遇到的问题是我不希望字符串受len var的限制。但是,我不清楚java知道如何改变它。

如何创建没有长度的char

1 个答案:

答案 0 :(得分:4)

一般来说,在输入字符串上没有最大长度是不好的做法,因为可能存在用于存储它的可用内存。

也就是说,您可以忽略len变量,只需在reader.read(...)上循环,然后将缓冲区附加到字符串中,直到您读完整个InputStream为止:

public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
        String result = "";
        InputStreamReader reader = null;
        reader = new InputStreamReader(stream, "UTF-8");        
        char[] buffer = new char[len];
        while(reader.read(buffer) >= 0)
        {
            result = result + (new String(buffer));
            buffer = new char[len];
        }
        return result;
    }